pyspark Synapse Notebook -将列名称中包含限制字符的CSV文件阅读到Parquet文件中

hzbexzde  于 2023-03-01  发布在  Spark
关注(0)|答案(1)|浏览(160)

我有一个csv文件,列名在第一行。不幸的是,有些字段中有方括号和空格。Synapse加载失败,出现以下错误:
分析异常:属性名称"xxxxx [xxxxxxxx]"在",;"中包含无效字符{}()\n\t ="。请使用别名对其进行重命名。
我看过spark-dataframe-column-naming-conventions-restrictions,它提供了一些关于如何重新声明列名的建议,但是数据已经在 Dataframe 中了。
我希望得到一些关于如何在pyspark处理这个问题的建议
谢谢

xzv2uavs

xzv2uavs1#

您可以在前面提到的SO link中使用相同的代码。它不会影响数据框中的数据。这只会替换列名。

newColumns = []
problematic_chars = ',;{}()='
for column in df.columns:
    column = column.lower()
    column = column.replace(' ', '_')
    for c in problematic_chars:
        column = column.replace(c, '')
    newColumns.append(column)
df = df.toDF(*newColumns)
display(df.limit(10))

我尝试在我的环境中用此代码和示例输入csv文件替换无效字符。

样品输入:

x1c 0d1x img:1个样本输入 Dataframe

  • col 3空格col;4分号;.以上代码将替换它们。
    结果

    img:2列名已转换的 Dataframe 。

相关问题