Я хотел бы использовать эту новую функцию: перезаписать определенный раздел без удаления всех данных в 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)
Пробовали ли вы искровую версию 2,4? Я работал с этой версией, и как ЭМИ, так и Клей она работала хорошо, чтобы использовать «динамический» в версия 2.4, просто используйте код:
dataset.write.mode("overwrite")
.option("partitionOverwriteMode", "dynamic")
.partitionBy("dt")
.parquet("s3://bucket/output")
В документации AWS указано, что Spark версия 2.3.2 должен использовать spark.sql.sources.partitionOverwriteMode = "dynamic"
.
Ссылочный клик здесь.