2016-07-01 10 views

答えて

7

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を作ります。

+0

ファイルをコピーするのではなく "移動"するには、単に 'deleteSource'ブール型パラメータを' true'に設定してください – Sean

0
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 !!") 
    } 
関連する問題