【问题标题】:AttributeError: 'StructType' object has no attribute '_get_object_id' while writing parquet fileAttributeError:“StructType”对象在写入镶木地板文件时没有属性“_get_object_id”
【发布时间】:2020-11-19 19:05:32
【问题描述】:

在 pyspark 中写入 parquet 文件时出现以下错误:

AttributeError:“StructType”对象没有属性“_get_object_id”

以下是我正在使用的命令:

df.write.format("parquet").option("schema",output_schema).save("test/parquet")

dataframe(df) 已通过读取 csv 文件创建,其架构如下:

StructType(List(StructField(ID,IntegerType,true),StructField(FIRST NAME,StringType,true)))

输出架构是

StructType(List(StructField(ID,IntegerType,true),StructField(FIRST_NAME,StringType,true)))

【问题讨论】:

    标签: apache-spark pyspark parquet


    【解决方案1】:

    您无法在将数据帧写入 parquet 时指定架构,因为 parquet 本身包含架构信息。

    只需直接保存 df 即可维护您的架构,

    df.write.format("parquet").save("test/parquet")
    

    【讨论】:

    • 模式的列名(FIRST NAME)有空格(“”),这在镶木地板中是不允许的,是的,我可以在数据框中重命名该列,但是没有任何方法可以再次给出完整的模式?
    • 在写入之前将模式传递给数据框。 df = spark.createDataFrame(df.rdd,schema=schema)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-21
    • 1970-01-01
    • 1970-01-01
    • 2019-06-02
    • 1970-01-01
    • 1970-01-01
    • 2017-11-27
    相关资源
    最近更新 更多