-
1.RDD
RDD,全称为 Resilient Distributed Datasets,即分布式数据集,是 Spark 中最基本的数据抽象,它代表一个不可变、 可分区、里面的元素可以并行计算的集合。在Spark 中,对数据的所有操作不外乎创建 RDD、转化已有 RDD 以及调用 RDD 操作进行求值。每个 RDD 都被分为多个分区,这些分区运行在集群中的不同的节点上。RDD 可以包含 Python、Java、Scala 中任意类型的对象,甚至可以包含用户自定义的对象。RDD 具有数据流模型的特点:自动容错、位置感知性调度和可伸缩性。RDD允许用户在执行多个查询时显式地将工作集缓存在内存中,后续的查询能够重用工作集,这极大地提升查询速度。
RDD 支持两种操作:transformation 操作和 action 操作。RDD 的 transformation操作是返回一个新的 RDD 的操作,比如 map 和 filter(),而 action 操作则是向驱动器程序返回结果或者把结果写入外部系统的操作,比如 count()和 first()。
-
2.DataFrame
DataFrame 是一个分布式数据容器。相比于 RDD,DataFrame 更像传统数据库中的二维表格,除了数据之外,还记录数据的结构信息,即 schema。同时,与 Hive类似,DataFrame 也支持嵌套数据类型(struct,array 和 map)。从 API 易用性的角度上看,DataFrame API 提供的是一套高层的关系操作,比函数式的 RDD API 要更加友好,门槛更低。由于与 R 和 Pandas 中的 DataFrame 类似,Spark DataFrame 很好地继承了传统单机数据分析体验。

本文对比分析了Spark中的RDD、DataFrame和DataSet。RDD是基本数据抽象,不可变、可分区,支持transformation和action操作;DataFrame带有schema,提供结构信息,拥有丰富的算子和执行效率优化;DataSet作为DataFrame的拓展,具有类型安全和查询优化特性,适用于类型敏感的操作。

1226

被折叠的 条评论
为什么被折叠?



