У меня есть файл json, который я хотел бы преобразовать (например, csv), развернув одно из полей в столбцы. Я использовал для этого explode (), но он выдает ошибку, даже если одна из многих записей не имеет точной схемы.
Входной файл:
{"place": "KA" , "id": "200", "swversion": "v.002", "events": [{"time": "2020-05-23T22: 34: 32.770Z", "eid": 24, "app ":" testing "," state ": 0}]} {" place ":" AP "," id ":" 100 "," swversion ":" v.001 "," events ": [[]] }
В приведенном выше примере я хочу развернуть поля «событий», и они должны стать столбцами. В идеальном случае «события» представляют собой массив типа структуры.
Ожидаемые столбцы выходного файла:
* место, идентификатор, версия, время, идентификатор, приложение, состояние *
Для в этом случае я использовал explode (), доступный в pyspark. sql, но поскольку моя вторая запись во входном файле не соответствует схеме, в которой «events» является массивом типа структуры, explode () здесь не работает, давая ошибка.
Код, который я использовал для взрыва:
df = spark.read. json ("InputFile")
ndf = df.withColumn ("event ", explode (" events ")). drop (" events ")
ndf.select (" place "," id "," swversion "," event. * ")
Последняя строка не работает из-за второй записи в моем входном файле ..
Я считаю, что для explode () не должно быть слишком сложно справиться с этим. Можете ли вы подсказать, как избежать
Невозможно раскрыть типы звезд