Scala 如何使用数据帧创建映射?

Scala 如何使用数据帧创建映射?,scala,apache-spark,rdd,Scala,Apache Spark,Rdd,我有一个数据帧,df.show()如下所示: +-----------+-------------------+ |id| name| +-----------+-------------------+ | 1231| aa | | 1232| bb | | 1233| cc | | 1234|

我有一个数据帧,df.show()如下所示:

+-----------+-------------------+
|id|                        name|
+-----------+-------------------+
|       1231|                aa |
|       1232|                bb |
|       1233|                cc |
|       1234|                dd |
|       1235|                 dd|
|       1236|                 cc|
+-----------+-------------------+
“id”列是唯一的,现在我要创建一个键为“id”、值为“name”的映射,如何用scala实现它?假设数据帧名称为df

val mapResult = df.map(...)

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

df.rdd.map(x => (x.getInt(0), x.getString(1))).collectAsMap()
这会给你

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)
仅当数据适合驱动程序时,才建议使用collectAsMap


希望这有帮助

但是结果类型是Predef.Map,我想获取一个集合。Map Map,我应该使用什么?很抱歉,我是一个新手,正在学习scala结果类型os的
scala.collection.Map[Int,String]
,如上图所示