Apache spark 我们什么时候应该使用Spark sql,什么时候应该使用Spark RDD

Apache spark 我们什么时候应该使用Spark sql,什么时候应该使用Spark RDD,apache-spark,pyspark,apache-spark-sql,rdd,Apache Spark,Pyspark,Apache Spark Sql,Rdd,在哪种情况下,我们应该选择spark RDD来编写解决方案,在哪种情况下,我们应该选择spark sql。我知道spark sql提供了更好的性能,它最适合于结构化和半结构化数据。但是,在选择spark Rdd和spark sql时,我们还需要考虑哪些因素。我看不出有多少理由仍然使用Rdd 假设您使用的是基于JVM的语言,根据spark文档,您可以使用SparkSQL+RDD(DataFrame==DataSet[Row])的混合数据集: Dataset是Spark 1.6中添加的一个新接口,它

在哪种情况下,我们应该选择spark RDD来编写解决方案,在哪种情况下,我们应该选择spark sql。我知道spark sql提供了更好的性能,它最适合于结构化和半结构化数据。但是,在选择spark Rdd和spark sql时,我们还需要考虑哪些因素。

我看不出有多少理由仍然使用Rdd

假设您使用的是基于JVM的语言,根据spark文档,您可以使用SparkSQL+RDD(DataFrame==DataSet[Row])的混合数据集:

Dataset是Spark 1.6中添加的一个新接口,它提供了RDD(强类型,能够使用强大的lambda函数)的优点和Spark SQL优化的执行引擎的优点


问题是python不支持数据集,因此,在处理非结构化数据时,您将使用RDD并失去spark sql优化功能。

我看不出有多少理由仍然使用RDD

假设您使用的是基于JVM的语言,根据spark文档,您可以使用SparkSQL+RDD(DataFrame==DataSet[Row])的混合数据集:

Dataset是Spark 1.6中添加的一个新接口,它提供了RDD(强类型,能够使用强大的lambda函数)的优点和Spark SQL优化的执行引擎的优点


问题是python不支持数据集,因此,在处理非结构化数据时,您将使用RDD并失去spark sql优化功能。

我发现使用DFs比DSs更容易使用-后者仍有待开发。关于pyspark的评论确实仍然相关

RDD对于zipWithIndex在条目上放置asc(连续序列号)仍然很方便

DFs/DSs有一个列式存储,并有更好的Catalyst(优化器)支持


此外,RDD可能会带来痛苦,比如需要键、值的连接,以及需要连接两个以上表的多步骤连接。它们是遗产。问题是互联网充满了传统,因此RDD jazz。

我发现使用DFs比DSs更容易使用——后者仍有待于imho的开发。关于pyspark的评论确实仍然相关

RDD对于zipWithIndex在条目上放置asc(连续序列号)仍然很方便

DFs/DSs有一个列式存储,并有更好的Catalyst(优化器)支持

此外,RDD可能会带来痛苦,比如需要键、值的连接,以及需要连接两个以上表的多步骤连接。它们是遗产。问题是互联网充满了传统,因此RDD爵士乐也就应运而生。

RDD
RDD是跨集群的数据集合,它处理非结构化和结构化数据。它通常是处理数据的功能部分

DF
数据帧基本上是定义行和列中数据的二维对象数组。它类似于数据库中的关系表。数据框只处理结构化数据

RDD
RDD是跨集群的数据集合,它处理非结构化和结构化数据。它通常是处理数据的功能部分

DF
数据帧基本上是定义行和列中数据的二维对象数组。它类似于数据库中的关系表。数据框只处理结构化数据


有很多使用RDD可以解决的用例,可以使用Dataframe/dataset API以更高的性能和可靠性来解决。我认为,大多数
mllib
api仍然使用RDD作为一级公民,并且不是所有api都有基于
Dataset
的实现,在这种情况下,您可以使用RDD。此外,如果您想要使用Dataframe难以实现的更细粒度级别的处理,那么可以使用RDD。总的来说,使用Dataframe/dataset API,在可能的情况下,可以使用RDD解决的大量用例可以使用Dataframe/dataset API以更高的性能和可靠性解决。我认为,大多数
mllib
api仍然使用RDD作为一级公民,并且不是所有api都有基于
Dataset
的实现,在这种情况下,您可以使用RDD。此外,如果您想要使用Dataframe难以实现的更细粒度级别的处理,那么可以使用RDD。总的来说,尽可能使用Dataframe/dataset API