我想把一个scalaMap转换成row对象(基本上是row(**dict)在python中所做的,我必须在scala spark中实现它)。输入:map(com.project.name->“a”,com.project.age->23)输出:行(com.project.name=“a”,com.project.age=23)请帮忙。
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
ve7v8dk22#
你可以用 Row.fromSeq :
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)]
Row(m.toSeq:_*)
[(com.project.name,A),(com.project.age,23)]
2条答案
按热度按时间bvuwiixz1#
您可以将Map转换为Dataframe,如下所示:
现在,如果要从Dataframe中获取行,可以按以下方式获取:
如果您想查看列的名称,可以按以下方式获取:
ve7v8dk22#
你可以用
Row.fromSeq
:或者
Row(m.toSeq:_*)
双方都在付出[(com.project.name,A),(com.project.age,23)]