我想使用Spark DataSet加載相當大的數據(比方說),其中的子集數據看起來如下所示。Spark中的關係轉換
|age|maritalStatus| name|sex|
+---+-------------+--------+---+
| 35| M| Joanna| F|
| 25| S|Isabelle| F|
| 19| S| Andy| M|
| 70| M| Robert| M|
+---+-------------+--------+---+
我需要的是有關係的轉換,其中一列從另一列(S)獲得它的價值。 例如,根據每個人記錄的「年齡」&「性別」,我需要將Mr或Ms/Mrs放在每個「name」屬性前面。另一個例子是,對於60歲以上的「年齡」的人,我需要將他或她標爲老年公民(派生專欄「seniorCitizen」爲Y)。
我對轉換後的數據最終需要的是如下:
+---+-------------+---------------------------+---+
|age|maritalStatus| name|seniorCitizen|sex|
+---+-------------+---------------------------+---+
| 35| M| Mrs. Joanna| N| F|
| 25| S| Ms. Isabelle| N| F|
| 19| S| Mr. Andy| N| M|
| 70| M| Mr. Robert| Y| M|
+---+-------------+--------+------------------+---+
大多數火花提供轉換是相當靜態的,而不是dyanmic。例如,如在示例here和here中定義的。
我正在使用Spark Datasets,因爲我是從關係數據源加載的,但如果您可能會建議使用普通RDD進行此操作的更好方法,請執行此操作。
你可以使用Dataframes和UDF做到這一點,你可以結合
when
,concat
,3210功能。 –我想你的名字轉換應該取決於婚姻狀況而不是年齡,不是嗎? –