Создание структуры Json из фрейма данных Pyspark

#python #python-3.x #dataframe #pyspark #mapreduce

#python #python-3.x #фрейм данных #pyspark #mapreduce

Вопрос:

У меня есть фрейм данных, который является результатом соединения слева. Теперь я хочу создать структуру json.

Я попытался использовать другой вариант, но мне не удалось его создать. Вот мой фрейм данных :

 col1    col2    col3    col4
1111    name    aaa     bbb
1111    name    ccc     ddd
1111    name    iii     kkk
1112    name1   abcd    def
1112    name1   DEFG    ABXC
  

Желаемая структура json:

 {col1: 1111, col2: name, details: [{col3: aaa, col4: bbb}, {col3: ccc, col4: ddd}, {col3: iii, col4: kkk}]},
{col1: 1112, col2: name1, details: [{col3: abcd, col4: def}, {col3: DEFG, col4: ABXC}]}
  

Ответ №1:

вы можете сделать это следующим образом:

 import pyspark.sql.functions as f

df = df.withColumn("details", f.to_json(f.struct("col3", "col4")))
df = df.groupBy(*["col1", "col2"]).agg(f.collect_list("details").alias("details"))

df.write.format('json').save('/path/file_name.json')