Spark/Scala:Struct类型的Spark数据框列
我有这样的输入 输入: 我希望输出类型为 使用Dataframe和UDF,我能够做到这一点 但我希望这些列名与struct数据类型一起使用。感谢您的帮助Spark/Scala:Struct类型的Spark数据框列,scala,apache-spark-sql,spark-dataframe,Scala,Apache Spark Sql,Spark Dataframe,我有这样的输入 输入: 我希望输出类型为 使用Dataframe和UDF,我能够做到这一点 但我希望这些列名与struct数据类型一起使用。感谢您的帮助 val udfHeaderLineList1 = udf((header:String,line:Seq[String])=>{ line.map(records=>List(header,records)).toList }) val eventingDFtable = my_dataframe_data_Table.
val udfHeaderLineList1 = udf((header:String,line:Seq[String])=>{
line.map(records=>List(header,records)).toList
})
val eventingDFtable = my_dataframe_data_Table.
groupBy(col("customerId"), col("header")).
agg(collect_list(col("Line")).alias("Line")).
withColumn("TransHeaderStruct",udfHeaderLineList1(col("header"),col("Line"))).printSchema
我通过创建case类得到了这个解决方案 case class simpleCaseClass (header:String,line:String) val udfHeaderLineList3 = udf((header:String,line:Seq[String])=>{ line.map(records=>List(header ,records)).map(value=>simpleCaseClass(value(0),value(1))) }
您能否检查此解决方案是否与问题中所需的模式匹配?我怀疑是的。它不匹配是的,的确如此;谢谢我想你一定找到了解决办法。对你的解决方案投赞成票 case class simpleCaseClass (header:String,line:String) val udfHeaderLineList3 = udf((header:String,line:Seq[String])=>{ line.map(records=>List(header ,records)).map(value=>simpleCaseClass(value(0),value(1))) }