Как заставить HDFS генерировать исключение, если файл уже существует? - PullRequest
0 голосов
/ 31 октября 2018

У меня есть 2 задания (разные экземпляры JVM), которые пытаются создать один и тот же файл.

В некоторых крайних случаях 2 задания одновременно проверяют существование файла и пытаются создать его точно в одно и то же время.

Мой код:

val hdfs: FileSystem = FileSystem.get(sparkContext.hadoopConfiguration)
val path: Path = new Path(filePath)

if(!hdfs.exists(path)) {
    hdfs.create(path, false).close()
    // next some work which might be done only by the job who really created file.
}

И поэтому оба задания одновременно обнаружат, что файл не существует, и попытаются его создать. Использование значения false для функции FSDataOutputStream create(Path f, boolean overwrite) недостаточно, поскольку оно не предупреждает, был ли файл создан или нет: нет выданного исключения, нет возвращаемого логического флага, если файл был создан .. ничего.

Не могли бы вы предложить мне, как выйти из этого вопроса?

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...