pySpark - 避免一次处理单行

pySpark - avoid processing single row at time

我正在使用一个专有函数获取一个 NumPy ndarray 向量,并给出另一个 ndarray 与结果相同的长度。

使用 Spark map,我可以 运行 这个函数 我输入数据的每一行 ,效率不高因为函数每次处理一个元素的向量。

是否可以在 Spark 中处理大量数据?例如,在一台机器上有(大)部分输入数据,在另一台机器上有另一部分数据,我可以将每台机器上可用的所有行一次提供给我的函数作为 ndarray for高效计算?

不清楚您需要执行什么类型的计算。

mapPartitions 可以处理每个更大的块,但在该块内部您仍然会使用 map 或其他操作来转换数据。

注意:但是,如果您将 Spark 与 Numpy 进行比较,您将在 SparkSQL 中使用 DataFrame 操作,并且所有数据都在服务器之间透明地为您洗牌。

如果你有两个 DataFrame,你可能会在执行任何操作之前加入它们。

在幕后,无法避免查看每个元素,无论是聚合、转换还是以其他方式收集回本地集合。