我有一个非常大的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)
代码必须足够通用,以便可以重命名许多列而无需对值进行硬编码。