У меня действительно большой фрейм данных pyspark, который получает данные из файлов json. Это пример схемы
|-- Col1: array (nullable = true)
| |-- element: double (containsNull = true)
|-- Col2: struct (nullable = true)
| |-- Col2-Col1: string (nullable = true)
| |-- Col2-Col2: string (nullable = true)
| |-- Col2-Col3: string (nullable = true)
Когда я делаю следующее, я не могу получить все имена столбцов в структуре.
df.columns
out: ['Col1', 'Col2']
Мне нужно заменить все дефисы подчеркиванием, чтобы я мог написать его в Hive. Hive не принимает '-', '[', '/' и т. Д. В имени столбца.
Например,
Имена столбцов должны измениться на
|-- Col1: array (nullable = true)
| |-- element: double (containsNull = true)
|-- Col2: struct (nullable = true)
| |-- Col2_Col1: string (nullable = true)
| |-- Col2_Col2: string (nullable = true)
| |-- Col2_Col3: string (nullable = true)
Код должен быть достаточно общим, чтобы многие столбцы можно было переименовывать без жесткого кодирования значений.