必填字段' uncompressed_pa​​ge_size'在序列化数据中找不到!实木复合地板

时间:2017-11-09 20:57:20

标签: hadoop apache-spark pyspark parquet

尝试使用pyspark从本地目录保存镶木地板文件时出现以下错误。 我试过火花1.6和2.2都给出了同样的错误

它正确显示了架构,但在编写文件时出错。

    base_path = "file:/Users/xyz/Documents/Temp/parquet"
    reg_path = "file:/Users/xyz/Documents/Temp/parquet/ds_id=48"
    df = sqlContext.read.option( "basePath",base_path).parquet(reg_path)
    out_path = "file:/Users/xyz/Documents/Temp/parquet/out"
    df2 = df.coalesce(5)
    df2.printSchema()
    df2.write.mode('append').parquet(out_path)

 org.apache.spark.SparkException: Task failed while writing rows
    Caused by: java.io.IOException: can not read class org.apache.parquet.format.PageHeader: Required field 'uncompressed_page_size' was not found in serialized data! Struct: PageHeader(type:null, uncompressed_page_size:0, compressed_page_size:0)

1 个答案:

答案 0 :(得分:0)

就我自己而言,我正在为Apache Tika编写一个自定义的Parquet Parser,我遇到了这个错误。事实证明,如果该文件正被另一个进程使用,ParquetReader将无法访问uncompressed_page_size。因此,导致错误。

验证其他进程是否未保留该文件。