[HADOOP] 로컬 시스템에서 디렉토리를 hdfs java 코드로 복사
HADOOP로컬 시스템에서 디렉토리를 hdfs java 코드로 복사
Java 코드를 사용하여 로컬 시스템에서 HDFS로 디렉토리를 복사하는 중 문제가 발생했습니다. 개별 파일을 이동할 수는 있지만 하위 폴더 및 파일을 사용하여 전체 디렉토리를 이동하는 방법을 알아낼 수는 없습니다. 누구든지 저를 도울 수 있습니까? 미리 감사드립니다.
해결법
-
==============================
1.FileSystem의 copyFromLocalFile 메소드를 사용하면됩니다. 소스 경로가 로컬 디렉토리이면 HDFS 대상에 복사됩니다.
FileSystem의 copyFromLocalFile 메소드를 사용하면됩니다. 소스 경로가 로컬 디렉토리이면 HDFS 대상에 복사됩니다.
... Configuration conf = new Configuration(); conf.addResource(new Path("/home/user/hadoop/conf/core-site.xml")); conf.addResource(new Path("/home/user/hadoop/conf/hdfs-site.xml")); FileSystem fs = FileSystem.get(conf); fs.copyFromLocalFile(new Path("/home/user/directory/"), new Path("/user/hadoop/dir")); ...
-
==============================
2.다음은 HDFS에서 읽고 쓰는 전체 작업 코드입니다. 두 가지 주장이 필요하다.
다음은 HDFS에서 읽고 쓰는 전체 작업 코드입니다. 두 가지 주장이 필요하다.
나는 Cloudera sandbox를 사용했다.
package hdfsread; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URI; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IOUtils; public class ReadingAFileFromHDFS { public static void main(String[] args) throws IOException { String uri = args[0]; InputStream in = null; Path pt = new Path(uri); Configuration myConf = new Configuration(); Path outputPath = new Path(args[1]); myConf.set("fs.defaultFS","hdfs://quickstart.cloudera:8020"); FileSystem fSystem = FileSystem.get(URI.create(uri),myConf); OutputStream os = fSystem.create(outputPath); try{ InputStream is = new BufferedInputStream(new FileInputStream(uri)); IOUtils.copyBytes(is, os, 4096, false); } catch(IOException e){ e.printStackTrace(); } finally{ IOUtils.closeStream(in); } } }
from https://stackoverflow.com/questions/12783968/copying-directory-from-local-system-to-hdfs-java-code by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Hadoop 의사 분산 모드에서 모든 코어의 완전한 활용 (0) | 2019.06.08 |
---|---|
[HADOOP] 지원되는 버전 라이브러리 Spark은 무엇입니까? (0) | 2019.06.08 |
[HADOOP] HDFS에서 10 일보다 오래된 파일 삭제 (0) | 2019.06.08 |
[HADOOP] 문제 : Hbase에서 데이터를 검색하는 Spark 셸의 스칼라 코드 (0) | 2019.06.08 |
[HADOOP] hadoop 메소드를 사용하여 여러 디렉토리에 출력 보내기 (0) | 2019.06.08 |