искра дельта перезаписать указанный c раздел - PullRequest
1 голос
/ 22 января 2020

asqdqw

Итак, у меня есть фрейм данных, в котором есть столбец file_date. Для данного прогона в фрейме данных есть только данные для одной уникальной даты file_date. Например, в прогоне предположим, что существует, скажем, около 100 записей с file_date 2020_01_21.

Я пишу эти данные, используя следующие

df.repartition(1).write.format("delta").partitionBy("FILE_DATE").mode("overwrite").option("overwriteSchema", "true").option("replaceWhere","FILE_DATE=" + run_for_file_date).mode("overwrite").save("/mnt/starsdetails/starsGrantedDetails/")

Мое требование - создать папку / раздел для каждого FILE_DATE, так как есть большая вероятность, что данные для указанного c file_date будут перезапущены, а данные указанного c file_date должны быть перезаписаны. К сожалению, в приведенном выше коде, если я не размещаю опцию «replaceWhere», он просто перезаписывает данные и для других разделов, но если я пишу выше, данные, похоже, корректно перезаписывают указанный раздел c, но каждый раз при записи сделано, я получаю следующую ошибку.

Обратите внимание, что я также установил следующую конфигурацию спарка перед записью:

spark.conf.set("spark.sql.sources.partitionOverwriteMode","dynamic")

Но я все еще получаю следующая ошибка:

AnalysisException: «записанные данные не соответствуют replaceWhere 'FILE_DATE = 2020-01-19'. \ nНеверные данные будут записаны в разделы FILE_DATE = 2020-01-20.;"

Можете ли вы помочь, пожалуйста.

...