我有一个包含许多特殊字符(如ä,ö,ü)的数据框。我使用ISO-8859-1编码从CSV读取数据。现在,我想将数据帧写入镶木地板中,以利用谓词下推等优势。我尝试使用以下命令:
df.write.parquet('df.parquet', mode='overwrite')
我收到以下错误:
org.apache.spark.sql.AnalysisException:属性名称“ FahrerFührerscheindatum”在“,; {}()\ n \ t =“中包含无效字符。请使用别名重命名。
现在,我的数据框很大。如何克服此错误而不必查找和替换所有无效字符?从CSV文件读取时,我已经可以做些什么吗?请看下面我的阅读声明:
df = spark.read.format("csv").option("delimiter", ";").option("header", True).option("encoding", "ISO-8859-1").load(path_to_claims_data, inferSchema =True, samplingRatio = 0.5)
答案将不胜感激。
答案 0 :(得分:0)
在将df写入拼花之前,您可以消除列名中的空格
for (field <- df.columns) {
df = df
.withColumnRenamed(field, field.replaceAll(" ", ""))
}