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 之间的大变化之一是从DataFrame
s 迁移远离到采用更新/改进的Dataset
对象。
但是在所有Spark 2.x docs 中,我看到DataFrames
被使用,而不是Datasets
。
所以我问:在 Spark 2.x 中,我们仍然使用 DataFrames
,还是让 Spark 人员没有更新 2.x 文档以使用更新的 + 推荐的 Datasets
?
【问题讨论】:
我看到这个问题是更多地确认使用哪个而不是他们的差异。 Spark 2.0 Dataset vs DataFrame 【参考方案1】:DataFrames
是Dataset
s,只是Dataset
s的一种特殊类型,即Dataset[Row]
,意思是无类型的Datasets
。
但确实,即使使用 Spark 2.x,许多 Spark 用户仍然使用DataFrame
s,尤其是用于快速原型制作(我就是其中之一),因为它是一个非常方便的 API,而且很多操作都是(在我的查看)使用DataFrame
s 比使用Dataset
s 更容易
【讨论】:
啊,好吧,那么 Spark 还没有更新他们的文档? 没有。DataFrame
是 Dataset
的一个特定的、高度优化的变体,提供了一组额外的功能,超过了通用的 Dataset
。它没有被弃用或过时,因此没有理由更新文档。
哦,太好了,主站点上是否有任何 Spark 文档/示例说明如何创建或使用 Datasets
?
没有?奇怪的。这可能是一个巨大的疏忽。【参考方案2】:
显然您可以同时使用这两种方法,但 Spark 的任何人都没有费心更新文档来展示如何使用 Datasets
,所以我猜他们真的希望我们只使用 DataFrames
,就像我们在 1.x 中所做的那样。
【讨论】:
以上是关于Spark 2.x 数据帧或数据集? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
Spark的核心RDD(Resilient Distributed Datasets弹性分布式数据集)
在 Python/PySpark 中 Spark 复制数据框列的最佳实践?