如果文件已经存在,如何使HDFS抛出异常?

时间:2018-10-31 12:16:24

标签: scala file stream hdfs

我有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)是不够的,因为它不会警告是否创建了文件:没有抛出异常,如果创建了文件则没有返回的布尔值标记。

所以您能建议我如何摆脱这个问题吗?

谢谢。

0 个答案:

没有答案