многоуровневое чтение в формате JSON (вложенный JSON) - PullRequest
0 голосов
/ 29 октября 2019

Как выбрать данные из вложенного JSON с помощью фреймов данных в Spark.

В приведенном ниже примере JSON я хотел ВЫБРАТЬ данные из массива в массиве

"xyz01": [{"@SEGMENT": "1", "POS": "00001", "MEN": "10.000", "xyz05": [{*
"CHL": "DIRECT", "BET": "54545"}, {"@SEGMENT": "1", "CHL": "INDIRECT", "TRG": "778787",}]}, {"@SEGMENT": "1", "POS": "00002","MENGE": "4354354", "xyz05": [{"@SEGMENT": "1", "ALCKZ": "+", "CHL": "DIRECT",}, {"@SEGMENT": "1", "CHL": "INDIRECT", "TRG": "3434343"}]};
]

требуемый выход: POS CHL 000001 DIRECT 000001 INDIRECT 000002 DIRECT 000002 INDIRECT

IЯ пытаюсь с приведенным ниже кодом .... но получить дубликаты значений в выводе. Код:

DF = "READ THE JOSON FILE INTO DataFrame"
DF.withColumn("LineItem",explode(col("XYZ01.POS")))
                          .withColumn("TypeCode",explode(col("XYZ01.XYZ05")))
                                 .select(explode(col("TypeCode.CHL")).as("TypeCodeOutPut"),col"LineItem"))

Выход из вышеприведенного кода: 000001 ПРЯМОЙ 000001 ПРЯМОЙ 000001 ПРЯМОЙ 000001 ПРЯМОЙ 000002 ПРЯМОЙ 000002 ПРЯМОЙ 000002 ПРЯМОЙ 000002 ПРЯМОЙ

...