Вот что я пытаюсь сделать. Из столбца «тип» сначала выполняется поворот фрейма данных. Данные в столбце «type» затем используются для создания схемы.
val df = spark.sql("""select id,type,key,value from student_details""")
val pivot_df = df.groupBy("id","key").pivot("type").agg(first("value"))
val dist_type_df = spark.sql("""select distinct type from student_details""")
val needed_col_names : List[String] = dist_type_df.select("type").map(_.getString(0)).collect.toList
как можно использовать необходимые_col_names для создания схемы StructType и массива StructType? Мне нужно использовать схему, созданную для каждого столбца данных типа «тип».
val schema = spark.read.json(pivot_df.select(needed_col_names.head , needed_col_names.tail : _*).as[String]).schema
Как мне изменить приведенный ниже код, чтобы получить фрейм данных для всех столбцов?
val res_df = df.select($"id",$"type",$"key",from_json($"value",schema).as("s")).select("id","type","key","s.*")