sparkscala:将Map转换为行对象

amrnrhlw  于 2021-05-17  发布在  Spark
关注(0)|答案(2)|浏览(534)

我想把一个scalaMap转换成row对象(基本上是row(**dict)在python中所做的,我必须在scala spark中实现它)。
输入:map(com.project.name->“a”,com.project.age->23)
输出:行(com.project.name=“a”,com.project.age=23)
请帮忙。

bvuwiixz

bvuwiixz1#

您可以将Map转换为Dataframe,如下所示:

import org.apache.spark.sql.types._
import org.apache.spark.sql.functions._
val input : Map[String,String] = Map("com.project.name" -> "A", "com.project.age" -> "23")
val df = input.tail
  .foldLeft(Seq(input.head._2).toDF(input.head._1))((acc,curr) => 
acc.withColumn(curr._1,lit(curr._2)))

现在,如果要从Dataframe中获取行,可以按以下方式获取:

val row = df.first

如果您想查看列的名称,可以按以下方式获取:

val columns = df.columns
ve7v8dk2

ve7v8dk22#

你可以用 Row.fromSeq :

val m = Map("com.project.name" -> "A", "com.project.age" -> "23")
val row = Row.fromSeq(m.toSeq)

或者 Row(m.toSeq:_*) 双方都在付出 [(com.project.name,A),(com.project.age,23)]

相关问题