我有一個包含超過百萬條記錄的產品信息文件。 CSV文件看起來像: 如何使用spark替換列內容
Product CategoryName SalesUnit Other Columns... p1 a12 41而且我有一個映射文件(CategoryCode < - > CategoryName),如下所示。映射文件總共有200條記錄:
p2 x5 72
p3 x5 69
p4 c21 80
p5 b16 59
p6 x5 75 .. .. ..
CategoryCode CategoryName最後,我想用CategoryCode替換類別名稱的值:
1.0 a12
2.0 b13 3.0 b16 4.0 c12
5.0 c21
6.0 x5
.. ..
Product Category SalesUnit Other Colulmns.. p1 1.0 41我的做法是用火花數據框的UDF:
p2 6.0 72
p3 6.0 69
p4 5.0 80
p5 3.0 59
p6 6.0 75 .. .. ..
udf { (CategoryName: String) => if (CategoryName.trim() == "a12") 1.0 else if (CategoryName.trim() == "b13") 2.0 else if (CategoryName.trim() == "b16") 3.0 else if (CategoryName.trim() == "c12") 4.0 else if (CategoryName.trim() == "c21") 5.0 else if (CategoryName.trim() == "x5") 6.0 else if (CategoryName.trim() == "z12") 7.0 else if (...) ... ... ... else 999.0 }任何其他優雅的方式來實現的更換無需通過編碼這麼多,如果... else子句?謝謝。
謝謝,你的方法比我的更好。 :) –