HDFS:// abc:9000/user/a.txtからHDFS:// abc:へのコピーファイルと同じように、 9000/user/123/JAVA APIを使用してHDFS内のファイルを移動またはコピーする方法
JAVA APIを使用してこれを行うことはできますか?ありがとう
HDFS:// abc:9000/user/a.txtからHDFS:// abc:へのコピーファイルと同じように、 9000/user/123/JAVA APIを使用してHDFS内のファイルを移動またはコピーする方法
JAVA APIを使用してこれを行うことはできますか?ありがとう
FileUtilは、ファイルをコピーする方法を提供します。
Configuration configuration = new Configuration();
configuration.set("fs.defaultFS", "hdfs://abc:9000");
FileSystem filesystem = FileSystem.get(configuration);
FileUtil.copy(filesystem, new Path("src/path"), filesystem, new Path("dst/path"), false, configuration);
あなたは別のクラスタにコピーする必要がある場合は、単に新しいConfiguration
、セットアップや新しいFileSystem
を作ります。
ファイルをコピーするのではなく "移動"するには、単に 'deleteSource'ブール型パラメータを' true'に設定してください – Sean
If you want to move files from directory it is little bit tricky below code done same task for me !!
val conf = new org.apache.hadoop.conf.Configuration()
val src:Path = new org.apache.hadoop.fs.Path(hdfsDirectory)
val fs = FileSystem.get(src.toUri,conf)
val srcPath: Path = new Path("hdfs://sourcePath/")
val srcFs =FileSystem.get(srcPath.toUri,conf)
val dstPath:Path =new Path("hdfs://targetPath/")
val dstFs =FileSystem.get(dstPath.toUri,conf)
val exists = fs.exists(new org.apache.hadoop.fs.Path(hdfsDirectory))
val status:Array[FileStatus] = fs.listStatus(new Path(hdfsDirectory))
if (status.length>0) {
status.foreach(x => {
println("My files: " + x.getPath)
FileUtil.copy(srcFs, x.getPath, dstFs, dstPath, true, conf)
println("Files moved !!" +x.getPath)
}
)}
else{
println("No Files Found !!")
}
FileSystem APIを調べることができます。 –