美文网首页
在RDD、DataFrame和DataSet之间怎么选?

在RDD、DataFrame和DataSet之间怎么选?

作者: 本宝宝天然萌 | 来源:发表于2017-07-27 17:45 被阅读0次

先来介绍一下spark中的RDD、DataFrame和DataSet:

RDD(弹性分布式数据集)数据元素的不可变的分布式集合,在集群中的节点之间进行分区,可以与提供转换和操作的低水平的API并行操作。

DataFrame是一个不可变的分布式数据集合。与RDD不同,数据被组织成命名列,就像关系数据库中的表,为了使大数据集处理变得更加容易,DataFrame允许开发人员将结构强加于分布式数据集合,从而可以使用更高层次的抽象; 它提供了一个API来操纵您的分布式数据; 可以使得不懂编3程的人也可以使用。

DataFrame和Dataset API构建在Spark SQL引擎之上,所以它使用Catalyst来生成优化的逻辑和物理查询计划。通过R,Java,Scala或Python DataFrame / Dataset API,所有关系类型查询都经历相同的代码优化器,提供空间和速度效率。而数据集[T]类型的API针对数据工程任务进行了优化,untyped Dataset[Row](DataFrame的别名)更快,适合交互式分析。

果您需要丰富的语义,高级抽象和域特定的API,请使用DataFrame或Dataset。

如果您的处理需要高层次表达式  filters, maps, aggregation, averages, sum, SQL queries, columnar access和对半结构化数据使用lambda函数,请使用DataFrame或Dataset。

如果要在编译时要求更高程度的类型安全性,则需要类型化的JVM对象,利用Catalyst优化,并从Tungsten的高效代码生成中受益,使用Dataset。

如果要在Spark Libraries之间统一和简化API,请使用DataFrame或Dataset。

这些情况下建议使用RDD:

数据是非结构化的时候,例如 :media streams or streams of text

使用功能编程构造来操纵您的数据而不是域特定表达式时;

放弃针对结构化和半结构化数据的DataFrames和Datasets提供的一些优化和性能时。

相关文章

网友评论

      本文标题:在RDD、DataFrame和DataSet之间怎么选?

      本文链接:https://www.haomeiwen.com/subject/tozzkxtx.html