与PySpark并行自定义功能

时间:2018-07-20 14:31:04

标签: python pyspark

我熟悉使用UDF将自定义函数逐行应用于DataFrame。但是,我想知道如何将自定义函数并行应用于DataFrame的不同子集。

这是一个简化的示例:

import numpy as np
import pandas as pd

dummy_data = pd.DataFrame({'id':np.random.choice(['a','b','c'],size=100),
                           'val':np.random.normal(size=100)})

我的自定义函数将数字数组作为输入。对于每个唯一的“ id”,我想将函数应用于与该ID相关联的“ val”值数组。

我现在这样做的一种简单方法是循环遍历我的PySpark DataFrame,并为每个“ id”将数据转换为pandas DataFrame,然后应用该函数。它可以工作,但是显然它很慢并且不使用火花。

我该如何并行化?

1 个答案:

答案 0 :(得分:1)

这个答案太短了,它应该只是一个评论,而没有足够的声誉来发表评论。

Spark 2.3引入了熊猫矢量化的UDF,这正是您正在寻找的:通过PyArrow序列化,以分布式方式在分组的Spark DataFrame上执行自定义熊猫转换,并具有出色的性能。

请参见

有关更多信息和示例。