如何使用数据框创建地图

Zha*_*Xin 1 scala apache-spark rdd

我有一个数据框df.show()像这样:

+-----------+-------------------+
|id|                        name|
+-----------+-------------------+
|       1231|                aa |
|       1232|                bb |
|       1233|                cc |
|       1234|                dd |
|       1235|                 dd|
|       1236|                 cc|
+-----------+-------------------+
Run Code Online (Sandbox Code Playgroud)

“id”列是唯一的,现在我要创建一个键为“id”,值为“name”的映射,如何通过scala实现它?假设数据帧名称是 df。

val mapResult = df.map(...)
Run Code Online (Sandbox Code Playgroud)

Sha*_*ala 6

您可以简单地转换rdd并使用collectAsMap

df.rdd.map(x => (x.getInt(0), x.getString(1))).collectAsMap()
Run Code Online (Sandbox Code Playgroud)

这会给你

scala>  df.rdd.map(x => (x.getInt(0), x.getString(1))).collectAsMap()
res0: scala.collection.Map[Int,String] = Map(1231 -> aa, 1234 -> dd, 1236 -> cc, 1233 -> cc, 1232 -> bb, 1235 -> dd)
Run Code Online (Sandbox Code Playgroud)

仅当您的数据适合驱动程序时才建议使用collectAsMap。

希望这可以帮助!