将 spark 数据框中的两列转换为 Map 类型?

pra*_*ady 3 apache-spark apache-spark-sql

例如,我有两列

 Code   Department
    E.          ECE
    C.          CSE
Run Code Online (Sandbox Code Playgroud)

我想将其转换为地图类型,如下所示

Map( E -> ECE, C -> CSE) 
Run Code Online (Sandbox Code Playgroud)

注意 - 当前使用带有 Scala 的 spark 2.2。

Ram*_*jan 7

鉴于输入数据框模式如下

+----+----------+
|Code|Department|
+----+----------+
|E.  |ECE       |
|C.  |CSE       |
+----+----------+

root
 |-- Code: string (nullable = true)
 |-- Department: string (nullable = true)
Run Code Online (Sandbox Code Playgroud)

您可以转换为 rdd 并将每一行转换为 Map 内部 map 函数,最后收集为 Map

df.rdd.map(row => (row.getString(0) -> row.getString(1))).collectAsMap()
Run Code Online (Sandbox Code Playgroud)

这是您想要的输出

Map(E. -> ECE, C. -> CSE)
Run Code Online (Sandbox Code Playgroud)