首页 文章

在Spark 2.1.0中启用_metadata文件

提问于
浏览
2

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

我发现自从编写镶木地板文件时,默认情况下禁用Spark 2.0编写_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)

1 回答

  • 0

    这是 sc.emptyRDD() 的行为问题 . 您可以在https://github.com/apache/spark/pull/12855上找到有关此行为的详细信息 .

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

相关问题