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