[HADOOP] Java API를 사용하여 Hadoop에서 파일을 이동 하시겠습니까?
HADOOPJava API를 사용하여 Hadoop에서 파일을 이동 하시겠습니까?
Java API를 사용하여 HDFS에서 파일을 옮기고 싶습니다. 나는 이것을 할 수있는 방법을 알 수 없다. FileSystem 클래스는 로컬 파일 시스템으로 이동하는 것을 허용하고 싶을뿐입니다.하지만 HDFS로 유지하고 거기로 옮기고 싶습니다.
나는 기본적인 것을 놓치고 있니? 내가 할 수있는 유일한 방법은 입력 스트림에서 그것을 읽고 다시 쓰는 것입니다 ... 그리고 오래된 복사본을 삭제하십시오.
감사
해결법
-
==============================
1.FileSystem.rename () 사용 :
FileSystem.rename () 사용 :
-
==============================
2.java.nio. * 방식은 항상 HDFS에서 작동하지 않을 수 있습니다. 그래서 작동하는 다음 해결책을 찾았습니다.
java.nio. * 방식은 항상 HDFS에서 작동하지 않을 수 있습니다. 그래서 작동하는 다음 해결책을 찾았습니다.
org.apache.hadoop.fs.FileUtil.copy API를 사용하여 한 디렉토리에서 다른 디렉토리로 파일 이동
val fs = FileSystem.get(new Configuration()) val conf = new org.apache.hadoop.conf.Configuration() val srcFs = FileSystem.get(new org.apache.hadoop.conf.Configuration()) val dstFs = FileSystem.get(new org.apache.hadoop.conf.Configuration()) val dstPath = new org.apache.hadoop.fs.Path(DEST_FILE_DIR) for (file <- fileList) { // The 5th parameter indicates whether source should be deleted or not FileUtil.copy(srcFs, file, dstFs, dstPath, true, conf)
-
==============================
3.나는 FileUtilts replaceFile이 또한 목적을 해결할 것이라고 생각한다. http://hadoop.apache.org/common/docs/current/api/org/apache/hadoop/fs/FileUtil.html#replaceFile(java.io.File, java.io.File)
나는 FileUtilts replaceFile이 또한 목적을 해결할 것이라고 생각한다. http://hadoop.apache.org/common/docs/current/api/org/apache/hadoop/fs/FileUtil.html#replaceFile(java.io.File, java.io.File)
-
==============================
4.
hdfsDirectory="hdfs://srcPath" 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://srcPath") 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 !!") }
from https://stackoverflow.com/questions/5507804/moving-files-in-hadoop-using-the-java-api by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Rstudio- 서버 환경 변수가로드되지 않습니까? (0) | 2019.07.11 |
---|---|
[HADOOP] Hadoop에서 Writable 클래스를 사용자 정의하는 방법은 무엇입니까? (0) | 2019.07.11 |
[HADOOP] 파케 파일에 대한 메타 데이터 생성 (0) | 2019.07.11 |
[HADOOP] HDFS의 블록이 너무 큰 이유는 무엇입니까? (0) | 2019.07.11 |
[HADOOP] Hadoop 명령을 찾을 수 없습니다. (0) | 2019.07.11 |