什麼是優化的或性能最好的方法來解決下面的用例火花數據框中多列計算的優化方式?
考慮一個100萬行和100列的數據幀,其中我們的興趣是1列 - 消息。我需要根據消息中匹配關鍵字存在的條件構建3個新列。
- 消息:對代碼開發堆棧溢出貢獻 一天
- FLAG1關鍵詞增加一天:堆棧,懈怠
- FLAG 2關鍵字:推特,臉譜,WhatsApp的
- Flag3相同的關鍵字:流量,運行,增加
預期輸出:(message,flag1,flag2,flag3)堆棧溢出對代碼開發的貢獻日益增加,1,0,0
方法1
val tempDF = df.withColumn("flag1",computeFlag(col("message"))).withColumn("flag2",computeFlag(col("message"))).withColumn("flag3",computeFlag(col("message")))
方法2
val tempDF = df.withColumn("flagValues",computeMultipleFlags(col("message"))).withColumn("_tmp", split($"flagValues","#")).select($"message",$"_tmp".getItem(0).as("flag1"),$"_tmp".getItem(1).as("commercial"),$"_tmp".getItem(2).as("flag2"),$"_tmp".getItem(3).as("flag3")).drop("_tmp")
UDF:computeFlag返回1或0基於相應的關鍵字列表
UDF的精確匹配:computeMultipleFlags到根據flag1,flag 2和an各個關鍵字的精確匹配返回1或0的#分隔結果d標誌3:示例1#0#0
我已經使用這兩種方法解決了問題,但看到/感覺方法2表現更好。請指教。
星火數據幀默認情況下,並行但如何這種情況下對方法1.將FLAG1,FLAG2,Flag3相同的列 工作 並行或串行的計算?
將引發數據幀自動並行處理我的輸入欄 「消息」:多個行的針對列多個線程
計算?