首页 > 解决方案 > pySpark - 避免一次处理单行

问题描述

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

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

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

标签: apache-sparknumpy-ndarray

解决方案


不清楚您需要执行哪些类型的计算。

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

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

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

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


推荐阅读