2017-03-20 6 views
0

JSON 파일을 CSV로 변환하려고합니다.HDFS에서 JSON에서 CSV로 변환

UNIX 파일 시스템과 로컬 파일 시스템에서 완벽하게 수행 할 수있는 JAVA 코드가 있습니다. HDFS에서이 변환을 수행하기 위해 주 클래스 아래에 작성했습니다.

public class ClassMain { 

    public static void main(String[] args) throws IOException { 


     String uri = args[1]; 
     String uri1 = args[2]; 
     Configuration conf = new Configuration(); 
     FileSystem fs = FileSystem.get(URI.create(uri), conf); 
     FSDataInputStream in = null; 
     FSDataOutputStream out = fs.create(new Path(uri1)); 
     try{ 

      in = fs.open(new Path(uri)); 

      JsonToCSV toCSV = new JsonToCSV(uri); 
      toCSV.json2Sheet().write2csv(uri1); 
      IOUtils.copyBytes(in, out, 4096, false); 

      } 
     finally{ 
      IOUtils.closeStream(in); 
      IOUtils.closeStream(out); 
     } 
    } 

} 

json2sheet 및 write2csv는 변환 및 쓰기 작업을 수행하는 메소드입니다.

나는 명령 아래 사용하여이 항아리를 실행하고 있습니다 :

hadoop jar json-csv-hdfs.jar com.nishant.ClassMain /nishant/large.json /nishant/output 

문제는, 그것은/nishant/출력에 아무것도 기록하지 않습니다. 0 크기/nishant/출력 파일을 만듭니다.

아마도 copyBytes의 사용법은 좋은 생각이 아닙니다.

유닉스 FS 및 로컬 FS에서 제대로 작동하는 경우 HDFS에서이를 수행하는 방법.

여기에 내가 CSV로 JSON 파일을 변환하려고하지 그 값 파일 시스템이 성공적으로 HDFS에 연결하는 하나의 구성 키를 필요로

+0

아니요. 비슷한 문제는 없습니다. 여기에 JSON 파일을 CSV로 변환하려고합니다. 언급 한 링크에서 JSON 객체를 해당 값에 매핑하려고합니다. – earl

+0

Spark SQL, Hive와 같은 SQL 유틸리티를 사용하지 않는 이유는 무엇입니까? – mrsrinivas

답변

0

에 JSON 객체를 매핑하려고합니다.

conf.set(key, "hdfs://host:port"); // where key="fs.default.name"|"fs.defaultFS"