gpt4 book ai didi

apache-spark - 如何将函数应用于 PySpark DataFrame 指定列的每一行

转载 作者:行者123 更新时间:2023-12-01 06:01:16 25 4
gpt4 key购买 nike

我有一个 PySpark DataFrame 由三​​列组成,其结构如下。

In[1]: df.take(1)    
Out[1]:
[Row(angle_est=-0.006815859163590619, rwsep_est=0.00019571401752467945, cost_est=34.33651951754235)]

我想要做的是检索第一列( angle_est )的每个值,并将其作为参数传递 xMisallignment到定义的函数来设置类对象的特定属性。定义的函数是:
def setMisAllignment(self, xMisallignment):
if np.abs(xMisallignment) > 0.8:
warnings.warn('You might set misallignment angle too large.')
self.MisAllignment = xMisallignment

我试图选择第一列并将其转换为 rdd,并将上述函数应用于 map() 函数,但似乎不起作用, MisAllignment反正没变。
df.select(df.angle_est).rdd.map(lambda row: model0.setMisAllignment(row))

In[2]: model0.MisAllignment
Out[2]: 0.00111511718224

任何人都有想法可以帮助我让该功能发挥作用?提前致谢!

最佳答案

您可以将您的函数注册为 spark UDF,类似于以下内容:

spark.udf.register("misallign", setMisAllignment)

您可以在此测试套件中获得许多创建和注册 UDF 的示例:
https://github.com/apache/spark/blob/master/sql/core/src/test/java/test/org/apache/spark/sql/JavaUDFSuite.java

希望它能回答你的问题

关于apache-spark - 如何将函数应用于 PySpark DataFrame 指定列的每一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45134930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com