scala – 如何将地图的RDD转换为数据帧
发布时间:2020-12-16 08:48:59 所属栏目:安全 来源:网络整理
导读:我有地图的RDD,我想将其转换为数据帧 这是RDD的输入格式 val mapRDD: RDD[Map[String,String]] = sc.parallelize(Seq( Map("empid" - "12","empName" - "Rohan","depId" - "201"),Map("empid" - "13","empName" - "Ross",Map("empid" - "14","empName" - "Ri
我有地图的RDD,我想将其转换为数据帧
这是RDD的输入格式 val mapRDD: RDD[Map[String,String]] = sc.parallelize(Seq( Map("empid" -> "12","empName" -> "Rohan","depId" -> "201"),Map("empid" -> "13","empName" -> "Ross",Map("empid" -> "14","empName" -> "Richard","depId" -> "401"),Map("empid" -> "15","empName" -> "Michale","depId" -> "501"),Map("empid" -> "16","empName" -> "John","depId" -> "701"))) 有没有办法转换成数据帧,如 val df=mapRDD.toDf df.show empid,empName,depId 12 Rohan 201 13 Ross 201 14 Richard 401 15 Michale 501 16 John 701 解决方法
您可以轻松将其转换为Spark DataFrame:
这是一个可以解决问题的代码: val mapRDD= sc.parallelize(Seq( Map("empid" -> "12","depId" -> "701"))) val columns=mapRDD.take(1).flatMap(a=>a.keys) val resultantDF=mapRDD.map{value=> val list=value.values.toList (list(0),list(1),list(2)) }.toDF(columns:_*) resultantDF.show() 输出是: +-----+-------+-----+ |empid|empName|depId| +-----+-------+-----+ | 12| Rohan| 201| | 13| Ross| 201| | 14|Richard| 401| | 15|Michale| 501| | 16| John| 701| +-----+-------+-----+ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |