什么时候应该使用Spark-sql,什么时候应该使用Spark RDD

时间:2020-05-29 13:09:51

标签: apache-spark pyspark apache-spark-sql rdd

在哪种情况下,我们应该首选spark RDD编写解决方案,在哪种情况下,我们应该选择使用spark-sql。我知道spark-sql可以提供更好的性能,并且最适合结构和半结构数据。但是在选择之间的spark Rdd和spark-sql时,还有哪些其他因素需要我们考虑。

3 个答案:

答案 0 :(得分:1)

我没有太多理由仍然使用RDD。

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

数据集是Spark 1.6中添加的新接口,具有RDD的优点(强类型输入,使用强大的lambda函数的能力)以及Spark SQL的优化执行引擎的优点。

问题是python不支持DataSet,因此,当您使用非结构化数据时,您将使用RDD并失去spark-sql优化。

答案 1 :(得分:1)

我发现使用DF比使用DS更易于使用-后者仍然受到开发的限制。对pyspark的评论确实仍然有用。

RDD对于zipWithIndex仍然很方便,可以在项目上放置asc,连续的序列号。

DF / DS具有列式存储,并且具有更好的Catalyst(Optimizer)支持。

此外,使用RDD的事情可能会很痛苦,例如,如果需要联接两个以上的表,则联接需要键,值和多步联接。他们是遗产。问题在于互联网充满了遗产,因此RDD爵士乐也如此。

答案 2 :(得分:0)

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

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

enter image description here