我有一个要保存为Parquet的标题的CSV文件(实际上是一个增量表)
列标题中有空格,镶木地板无法处理。如何将空格改为下划线?
这是到目前为止,我从其他SO帖子中总结出来的内容:
from pyspark.sql.functions import *
df = spark.read.option("header", True).option("delimiter","\u0001").option("inferSchema",True).csv("/mnt/landing/MyFile.TXT")
names = df.schema.names
for name in names:
df2 = df.withColumnRenamed(name,regexp_replace(name, ' ', '_'))
当我运行它时,最后一行给出了这个错误:
TypeError:列不可迭代
考虑到镶木地板无法处理空间,我认为这将是一个普遍的要求,但是很难找到任何示例。
您需要使用reduce
函数来将重命名迭代地应用于数据框,因为在您的代码df2
中,只有最后一列会被重命名...
代码如下(而不是for
循环):
df2 = reduce(lambda data, name: data.withColumnRenamed(name, name.replace('1', '2')),
names, df)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句