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