PySpark:在将数据帧写入拼花地板时如何处理无效字符?

时间:2020-02-13 09:32:32

标签: python encoding pyspark special-characters parquet

我有一个包含许多特殊字符(如ä,ö,ü)的数据框。我使用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)

答案将不胜感激。

1 个答案:

答案 0 :(得分:0)

在将df写入拼花之前,您可以消除列名中的空格

    for (field <- df.columns) {
      df = df
        .withColumnRenamed(field, field.replaceAll(" ", ""))
    }