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

时间:2018-06-04 13:20:46

标签: apache-spark apache-spark-sql

我有两列例如

 Code   Department
    E.          ECE
    C.          CSE

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

Map( E -> ECE, C -> CSE) 

注意 - 目前使用带有scala的spark 2.2。

2 个答案:

答案 0 :(得分:2)

鉴于输入 dataframe 架构如下所示

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

root
 |-- Code: string (nullable = true)
 |-- Department: string (nullable = true)

你可以转换为rdd并将每一行转换为map map函数中的Map,最后收集为Map

df.rdd.map(row => (row.getString(0) -> row.getString(1))).collectAsMap()

这是您想要的输出

Map(E. -> ECE, C. -> CSE)

答案 1 :(得分:0)

如果可以直接使用withColumnmap函数,则无需转换为RDD。

df.withColumn("map", map('Code, 'Department))