Разложение некорректно отобразившегося JSON по схеме. Pyspark
У меня есть spark dataframe, один из столбцов которого имеет тип JSON с разложением по схеме такого вида:
| |-- col1: struct (nullable = true)
| | |-- col1_1: struct (nullable = true)
| | | |-- col1_1_1: string (nullable = true)
| | | |-- col1_1_2: struct (nullable = true)
| | | | |-- col1_1_1_1: string (nullable = true)
| | | | |-- col1_1_1_2: string (nullable = true)
| | | | |-- col1_1_1_3: string (nullable = true)
| | | | |-- col1_1_1_4: string (nullable = true)
| | | | |-- col1_1_1_5: struct (nullable = true)
| | | | | |-- col1_1_1_5_1: string (nullable = true)
| | | | | |-- col1_1_1_5_2: string (nullable = true)
| | |-- col1_2: string (nullable = true)
При этом атрибут col1_2 является списком словарей и некорректно разложился по схеме. Мы видим тип string, хотя на самом деле он должен быть struct. Взглянув на лежащие внутри col1_2 атрибуты я вручную разложил его по схеме и получил следующую картину:
|-- col1_2: struct (nullable = true)
| |-- col1_2_1: string (nullable = true)
| |-- col1_2_2: struct (nullable = true)
| | |-- col1_2_2_1: string (nullable = true)
| | |-- col1_2_2_2: date (nullable = true)
| |-- col1_2_3: date (nullable = true)
| |-- col1_2_4: date (nullable = true)
| |-- col1_2_5: date (nullable = true)
| |-- col1_2_6: string (nullable = true)
| |-- col1_2_7: string (nullable = true)
Код который использовал для разложения:
structureSchema = StructType([
StructField("col1_2_1", StringType(), True),
StructField('col1_2_2', StructType([
StructField('col1_2_2_1', StringType(), True),
StructField('col1_2_2_2', DateType(), True),
])),
StructField('col1_2_3', DateType(), True),
StructField('col1_2_4', DateType(), True),
StructField('col1_2_5', DateType(), True),
StructField('col1_2_6', StringType(), True),
StructField('col1_2_7', StringType(), True)
])
Для случаев, когда внутри col1_2 лежит только один словарь все работает корректно, а когда словарей становится больше одного, атрибут перестает раскладываться по схеме, на выходе получаем None.
Подскажите пожалуйста как модифицировать написанный выше код, чтобы происходило корректное разложение по схеме для случаев, когда внутри списка словарей (атрибута col1_2) больше одного словаря.