将数据框中的列转换为字符串格式时遇到问题。数据框的示例如下:
-- example_code_b: string (nullable = true)
-- example_code: array (nullable = true)
[info] | |-- element: map (containsNull = true)
[info] | | |-- key: string
[info] | | |-- value: string (valueContainsNull = true)
我想将example code
从当前的(string,string)
转换成array(map(string,string))
的格式。
输入形式为
的形式[Map(entity -> PER), Map(entity -> PER)]
和 我希望输出为PER,PER
答案 0 :(得分:1)
您可以在DataFrame API中执行UDF或使用Dataset-API来执行此操作:
import spark.implicits._
df
.as[Seq[Map[String,String]]]
.map(s => s.reduce(_ ++ _))
.toDF("example_code")
.show()
请注意,这并不考虑多个键的情况,它们不是“合并”的,只是被覆盖了
答案 1 :(得分:1)
您可以简单地在任何数组列上使用explode
函数,这将为每个数组值创建单独的行。
val newDF = df.withColumn("mymap" explode(col("example_code")))