【问题标题】:Enable _metadata files in Spark 2.1.0在 Spark 2.1.0 中启用 _metadata 文件
【发布时间】:2017-06-10 18:48:16
【问题描述】:

在 Spark 2.1.0 中,保存空 Parquet 文件似乎被破坏了,因为无法再次读取它们(由于错误的模式推断)

我发现从 Spark 2.0 开始,写入 parquet 文件时默认禁用写入 _metadata 文件。但我找不到重新启用它的配置设置。

我尝试了以下方法:

spark_session = SparkSession.builder \
                        .master(url) \
                        .appName(name) \
                        .config('spark.hadoop.parquet.enable.summary-metadata', 'true') \
                        .getOrCreate()

还有一些完全不同的组合,例如没有spark.hadoop

我试图在 PySpark 中运行的代码:

spark_session = session.get_session()
sc = spark_session.sparkContext

df = spark_session.createDataFrame(sc.emptyRDD(), schema)

df.write.mode('overwrite').parquet(path, compression='none')

# this works
df = spark_session.read.schema(schema).parquet(path)

# This throws an error
df = spark_session.read.parquet(path)

【问题讨论】:

    标签: apache-spark pyspark parquet


    【解决方案1】:

    这是sc.emptyRDD() 的行为问题。您可以找到更多关于 https://github.com/apache/spark/pull/12855 的信息,为什么会发生这种行为。

    当前的解决方案是执行以下操作:df = spark_session.createDataFrame(sc.emptyRDD(), schema).repartition(1) 并且仍然具有问题中提到的配置设置。

    【讨论】:

      猜你喜欢
      • 2017-05-28
      • 2017-08-15
      • 1970-01-01
      • 2019-06-15
      • 1970-01-01
      • 2017-07-04
      • 1970-01-01
      • 2017-10-03
      • 2018-03-04
      相关资源
      最近更新 更多