У меня есть вариант использования, когда я передаю данные из Mongodb в HDFS в файле orc, который запускается каждые 1 день и добавляет данные в файл orc, существующий в hdfs.
Теперь меня беспокоит, если при записи в файл orc задание каким-то образом не удается или останавливается. Как мне справиться с этим сценарием, учитывая, что некоторые данные уже записаны в файл orc. Я хочу избежать дублирования в файле orc.
Фрагмент для записи в формат файла orc -
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)
Я не хочу идти на контрольно-пропускной пункт полный RDD, так как это будет очень дорогая операция. Кроме того, я не хочу создавать несколько файлов orc. Требование состоит в том, чтобы поддерживать только один файл.
Любое другое решение или подход, который я должен попробовать?