как использовать spark.read. json из схемы с несколькими столбцами - PullRequest
0 голосов
/ 06 августа 2020

Вот что я пытаюсь сделать. Из столбца «тип» сначала выполняется поворот фрейма данных. Данные в столбце «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.*")

...