Spark 2.x 数据帧或数据集? [复制]

Posted

技术标签:

【中文标题】Spark 2.x 数据帧或数据集? [复制]【英文标题】:Spark 2.x DataFrames or Datasets? [duplicate] 【发布时间】:2018-05-10 15:12:45 【问题描述】:

我的理解是,Spark 1.x 和 2.x 之间的变化之一是从DataFrames 迁移远离到采用更新/改进的Dataset 对象。

但是在所有Spark 2.x docs 中,我看到DataFrames 被使用,而不是Datasets

所以我问:在 Spark 2.x 中,我们仍然使用 DataFrames,还是让 Spark 人员没有更新 2.x 文档以使用更新的 + 推荐的 Datasets

【问题讨论】:

我看到这个问题是更多地确认使用哪个而不是他们的差异。 Spark 2.0 Dataset vs DataFrame 【参考方案1】:

DataFramesDatasets,只是Datasets的一种特殊类型,即Dataset[Row],意思是无类型的Datasets

但确实,即使使用 Spark 2.x,许多 Spark 用户仍然使用DataFrames,尤其是用于快速原型制作(我就是其中之一),因为它是一个非常方便的 API,而且很多操作都是(在我的查看)使用DataFrames 比使用Datasets 更容易

【讨论】:

啊,好吧,那么 Spark 还没有更新他们的文档? 没有。 DataFrameDataset 的一个特定的、高度优化的变体,提供了一组额外的功能,超过了通用的 Dataset。它没有被弃用或过时,因此没有理由更新文档。 哦,太好了,主站点上是否有任何 Spark 文档/示例说明如何创建或使用 Datasets 没有?奇怪的。这可能是一个巨大的疏忽。【参考方案2】:

显然您可以同时使用这两种方法,但 Spark 的任何人都没有费心更新文档来展示如何使用 Datasets,所以我猜他们真的希望我们只使用 DataFrames,就像我们在 1.x 中所做的那样。

【讨论】:

以上是关于Spark 2.x 数据帧或数据集? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何将火花流输出转换为数据帧或存储在表中

Spark的核心RDD(Resilient Distributed Datasets弹性分布式数据集)

在 Python/PySpark 中 Spark 复制数据框列的最佳实践?

使用 Java 在 Apache Spark 中从数据集中复制一行 n 次

RDD之七:Spark容错机制

Spark 2.x saveAsTable