본문 바로가기
Programming/JAVA

[JAVA] 로컬에 있는 파일 하둡(Hadoop)으로 복사

by JeeU147 2020. 3. 26.
반응형

일일이 파일을 HDFS에 올리는 작업을 할 수 없어서 JAVA코드로 지정해 놓은 경로에 파일이 있는 경우에 파일을 HDFS에 복사하는 코드를 작성해 보았습니다.

 

- 개발환경

  • JDK 1.8
  • hadoop-common-2.10.0.jar (글 작성 기준 최신버전)
  • Spring Boot 2.1.8

Spring Boot POM.xml

        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>2.10.0</version>
            <exclusions>
                <exclusion>
                    <artifactId>jdk.tools</artifactId>
                    <groupId>jdk.tools</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-hdfs</artifactId>
            <version>2.10.0</version>
        </dependency>

 

// 로컬 파일 파일 시스템에 복사 
public void fileCopy() throws IOException { 
// hdfs://hadoop설치IP:hadoop설정포트 --> namenode 경로 
    String rootPath = "hdfs://127.0.0.1:9000"; 
    // 리눅스에 하둡 설치 당시 유저명(권한 문제) 
    String username = "dslcom"; 
     
    // 하둡 namenode 경로 설정 
    Path p = new Path(rootPath); 
     
    // hadoop-common maven 참조 
    Configuration conf = new Configuration(); 
    // 하둡을 연결할 유저명(권한 문제) 
    System.setProperty("HADOOP_USER_NAME", username); 
         
    // hadoop-common maven 참조 
        FileSystem fileSystem = p.getFileSystem(conf); 
         
        // 첫번째 Path : 로컬(복사하고 싶은 파일(대소문자 상관없음)), 두번째 Path : 파일 시스템(복사할 위치 및 파일 명(파일명 지정 안하면 복사한 파일 명으로 저장됨)) 
        fileSystem.copyFromLocalFile(new Path("D://folder/hdfstest.csv"), new Path(rootPath + "/test/hdfs")); 
}
반응형

댓글