pySpark - 避免一次处理单行
pySpark - avoid processing single row at time
我正在使用一个专有函数获取一个 NumPy ndarray
向量,并给出另一个 ndarray
与结果相同的长度。
使用 Spark map,我可以 运行 这个函数 我输入数据的每一行 ,效率不高因为函数每次处理一个元素的向量。
是否可以在 Spark 中处理大量数据?例如,在一台机器上有(大)部分输入数据,在另一台机器上有另一部分数据,我可以将每台机器上可用的所有行一次提供给我的函数作为 ndarray
for高效计算?
不清楚您需要执行什么类型的计算。
mapPartitions
可以处理每个更大的块,但在该块内部您仍然会使用 map
或其他操作来转换数据。
注意:但是,如果您将 Spark 与 Numpy 进行比较,您将在 SparkSQL 中使用 DataFrame 操作,并且所有数据都在服务器之间透明地为您洗牌。
如果你有两个 DataFrame,你可能会在执行任何操作之前加入它们。
在幕后,无法避免查看每个元素,无论是聚合、转换还是以其他方式收集回本地集合。
我正在使用一个专有函数获取一个 NumPy ndarray
向量,并给出另一个 ndarray
与结果相同的长度。
使用 Spark map,我可以 运行 这个函数 我输入数据的每一行 ,效率不高因为函数每次处理一个元素的向量。
是否可以在 Spark 中处理大量数据?例如,在一台机器上有(大)部分输入数据,在另一台机器上有另一部分数据,我可以将每台机器上可用的所有行一次提供给我的函数作为 ndarray
for高效计算?
不清楚您需要执行什么类型的计算。
mapPartitions
可以处理每个更大的块,但在该块内部您仍然会使用 map
或其他操作来转换数据。
注意:但是,如果您将 Spark 与 Numpy 进行比较,您将在 SparkSQL 中使用 DataFrame 操作,并且所有数据都在服务器之间透明地为您洗牌。
如果你有两个 DataFrame,你可能会在执行任何操作之前加入它们。
在幕后,无法避免查看每个元素,无论是聚合、转换还是以其他方式收集回本地集合。