小编m v*_*m v的帖子

在 PySpark 中使用列名称中包含特殊字符的 parquet 文件

主要目标
显示或选择从 parquet 文件读取的 Spark 数据帧中的列。论坛中提到的所有解决方案在我们的案例中均不成功。

问题
当使用 SPARK 读取和查询 parquet 文件时,会出现此问题,原因是 ,;{}()\n\t=列名称中存在特殊字符。使用具有两列和五行的简单镶木地板文件重现了该问题。列的名称是:

  • SpeedReference_Final_01 (RifVel_G0)
  • SpeedReference_Final_02 (RifVel_G1)

出现的错误是:
Attribute name "SpeedReference_Final_01 (RifVel_G0)" contains invalid character(s) among " ,;{}()\n\t=". Please use alias to rename it.

我们使用Python语言的PySpark,实验的解决方案可以分类如下:

  1. 基于列重命名的解决方案- [ spark.read.parquet+获得的数据框的重命名]
    已经试验了几种解决方案:

    • withColumnRenamed(脚本中的问题 N.2)
    • toDF(第 N.3 期)
    • alias(第 N.5 期)

    在我们的例子中,它们都不起作用。

  2. 将 parquet 文件读入 Pandas 数据帧,然后从中创建一个新文件- [ pd.read.parquet+ spark.createDataFrame]
    此解决方案正在使用一个小型 parquet 文件(问题 N.0,即脚本内的解决方案):创建的 Spark 数据帧甚至可以成功查询如果它的列名包含特殊字符。不幸的是,对于我们的大镶木地板文件(每个镶木地板 600000 行 x 1000 列)来说这是不切实际的,因为创建 …

python dataframe pandas apache-spark pyspark

7
推荐指数
1
解决办法
5549
查看次数

标签 统计

apache-spark ×1

dataframe ×1

pandas ×1

pyspark ×1

python ×1