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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我们什么时候应该使用Spark-sql,什么时候应该使用Spark RDD相关的知识,希望对你有一定的参考价值。

在哪种情况下,我们应该首选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不支持DataSet,因此,当您使用非结构化数据时,您将使用RDD并失去spark-sql优化。

另一答案

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

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

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

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

另一答案

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

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

enter image description here

以上是关于我们什么时候应该使用Spark-sql,什么时候应该使用Spark RDD的主要内容,如果未能解决你的问题,请参考以下文章

我啥时候应该使用 GRUB_TIMEOUT 选项? [关闭]

什么时候应该在DB2中使用NOT ENFORCED和外键约束?

什么时候应该在 C# 中使用结构而不是类?

什么时候不应该使用 Web 服务?

我们啥时候应该使用互斥锁,啥时候应该使用信号量

我们什么时候应该使用Observer和Observable?