У меня есть DataFrame со следующей схемой:
root<br>
|-- id: string <br>
|-- destinationCity: struct (nullable = true)<br>
| |-- areaNumber: string (nullable = true)<br>
| |-- cityCode: string (nullable = true)<br>
| |-- countryCode: string (nullable = true)<br>
| |-- fileDetails: struct (nullable = true)<br>
| | |-- fileName: string (nullable = true)<br>
| |-- timeSeries: struct (nullable = true)<br>
| | |-- createdTimeStamp: struct (nullable = true)<br>
| | |-- effectiveTimeStamp: struct (nullable = true)<br>
| | |-- expiryTimeStamp: struct (nullable = true)<br>
| | |-- lastUpdatedTimeStamp: struct (nullable = true)<br>
При записи фрейма данных этой схемы в файл паркета он выдает ошибку, т. Е. Пустая вложенная схема не может быть записано в виде файла паркета.
Поэтому мне пришлось удалить столбец timeSeries
из кадра данных, поскольку тип структуры данных его поля не выводится из контекста
df.drop("timeSeries").write.parquet("output")
Выше кода сработало.
Теперь я хочу разработать обобщенный подход для отбрасывания всех тех столбцов, которые находятся в leaf
дерева схемы и имеют struct
в качестве Типа данных.
Как пройти через вложенные столбцы и проверить на листовой узел?