Не удалось создать раздел на S3 с помощью spark

#scala #apache-spark #partitioning #hortonworks-data-platform #hortonworks-sandbox

#scala #apache-spark #разделение #hortonworks-платформа данных #hortonworks-песочница

Вопрос:

Я хотел бы использовать эту новую функциональность: перезаписать определенный раздел без удаления всех данных в s3

Я использовал новый флаг ( spark.sql.sources.partitionOverwriteMode="dynamic" ) и протестировал его локально из своей IDE, и это сработало (я смог перезаписать определенный раздел в s3), но когда я развернул его на hdp 2.6.5 с spark 2.3.0, тот же код не создал папки s3, как ожидалось, папка вообще не создавалась, была создана только временная папка

Мой код :

 df.write
.mode(SaveMode.Overwtite)
.partitionBy("day","hour")
.option("compression", "gzip")
.parquet(s3Path)
  

Ответ №1:

Вы пробовали spark версии 2.4? Я работал с этой версией, и как с EMR, так и с Glue это сработало хорошо, для использования «dynamic» в версии 2.4 просто используйте код:

 dataset.write.mode("overwrite")
.option("partitionOverwriteMode", "dynamic")
.partitionBy("dt")
.parquet("s3://bucket/output")
  

В документации AWS указана версия 2.3.2 Spark для использования spark.sql.sources.partitionOverwriteMode="dynamic" .

Нажмите на ссылку здесь.