У меня есть сценарий использования, когда я отправляю данные из Mongodb в HDFS в файл или файл c, который выполняется каждые 1 день и добавляет данные в файл или файл c, существующий в формате hdf.
Теперь меня беспокоит, если во время записи в файл или файл c задание будет каким-то образом сбой или остановлено. Как мне справиться с этим сценарием, учитывая, что некоторые данные уже записаны в файл или c. Я хочу избежать дублирования в файле или c.
Фрагмент для записи в файл или c формат файла -
val df = sparkSession
.read
.mongo(ReadConfig(Map("database" -> "dbname", "collection" -> "tableName")))
.filter($"insertdatetime" >= fromDateTime && $"insertdatetime" <= toDateTime)
df.write
.mode(SaveMode.Append)
.format("orc")
.save(/path_to_orc_file_on_hdfs)
Я не хочу go для контрольной точки завершите СДР, так как это будет очень дорогая операция. Кроме того, я не хочу создавать несколько файлов или c. Требование - поддерживать только один файл.
Любое другое решение или подход, который я должен попробовать?