我应该在 PySpark 中选择 RDD 还是 DataFrame 之一?

Posted

技术标签:

【中文标题】我应该在 PySpark 中选择 RDD 还是 DataFrame 之一?【英文标题】:Should I choose one of RDD or DataFrame in PySpark? 【发布时间】:2020-09-22 06:27:52 【问题描述】:

在 PySpark(或 Spark)中,我们可以同时使用 RDD 和 DataFrame 结构。我应该选择其中之一吗?

我觉得有些工作对 RDD 来说很容易,而另一些工作对 DataFrame 来说很容易。什么是典型的编程约定?我想我使用了太多的.rdd.toDF()

【问题讨论】:

这取决于要求或您尝试完成任务的方式。 RDD 和 DF 都在内存中。 Dataframes 使 SQL 查询更容易执行,RDD 可用于其他任务。这取决于您处理的是结构化数据还是非结构化数据。 【参考方案1】:

一般建议坚持使用 Dataframe,因为 Spark 可能会使用更紧凑的数据表示形式,并且在处理数据时还会执行大量代码优化,而对于 RDD,这些优化不会执行。在某些情况下,您可能需要返回 RDD,但这不应该经常发生。

附:我建议浏览 Learning Spark, 2ed 即freely available from Databricks - 它也涵盖了这些主题。

【讨论】:

以上是关于我应该在 PySpark 中选择 RDD 还是 DataFrame 之一?的主要内容,如果未能解决你的问题,请参考以下文章

在pyspark中过滤两个RDD

如何在 Pyspark RDD 中查找元素的索引?

如何在 PySpark 中广播 RDD?

将 RDD 行拆分到 Pyspark 中的不同列

PySpark:如何从一个巨大的 RDD 中获取样本 RDD?

使用 pyspark 交叉组合两个 RDD