Il semble que l'enregistrement de fichiers Parquet vides soit cassé dans Spark 2.1.0 car il n'est pas possible de les lire à nouveau (en raison d'une inférence de schéma défectueuse).
J'ai trouvé que depuis Spark 2.0 l'écriture du fichier _metadata est désactivée par défaut lors de l'écriture de fichiers parquet. Mais je n'arrive pas à trouver le paramètre de configuration permettant de le réactiver.
J'ai essayé ce qui suit :
spark_session = SparkSession.builder \
.master(url) \
.appName(name) \
.config('spark.hadoop.parquet.enable.summary-metadata', 'true') \
.getOrCreate()
et quelques autres combinaisons différentes comme sans spark.hadoop
par exemple.
Le code que j'essaie d'exécuter dans 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)