Spark:如何在每个执行程序中创建本地数据帧

Posted

技术标签:

【中文标题】Spark:如何在每个执行程序中创建本地数据帧【英文标题】:Spark : how can i create local dataframe in each executor 【发布时间】:2018-02-09 23:40:32 【问题描述】:

在 spark scala 中,有一种方法可以在 pyspark 中的 pandas 等执行器中创建本地数据框。在 mappartitions 方法中,我想将迭代器转换为本地数据帧(如 python 中的 pandas 数据帧),以便可以使用数据帧特征而不是在迭代器上手动编码。

【问题讨论】:

【参考方案1】:

这是不可能的。

Dataframe 是 Spark 中的分布式集合。并且数据帧只能在驱动节点上创建(即在转换/动作之外)。

此外,在 Spark 中,您无法在其他操作中对 RDD/Dataframes/Datasets 执行操作: 例如以下代码将产生错误。

rdd.map(v => rdd1.filter(e => e == v))

DF 和 DS 在下面也有 RDD,所以那里的行为相同。

【讨论】:

以上是关于Spark:如何在每个执行程序中创建本地数据帧的主要内容,如果未能解决你的问题,请参考以下文章

在 Spark 中创建数据帧时出错

如何在 spark sql 中创建永久表

Spark 数据帧分区计数

带有广播连接的 Spark 流式传输

如何在 Go 中创建 WebSocket 应用程序

创建一个密集向量的单位矩阵作为 Spark 数据帧