簡體   English   中英

如何將函數應用於PySpark DataFrame的指定列的每一行

[英]How to apply function to each row of specified column of PySpark DataFrame

我有一個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

希望它能回答你的問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM