복붙노트

[HADOOP] 아파치 스파크 JavaSchemaRDD 그것에 RDD 입력 데이터가 비록 비어

HADOOP

아파치 스파크 JavaSchemaRDD 그것에 RDD 입력 데이터가 비록 비어

안녕하세요 저는 40 열 탭으로 구분 된 파일의 큰 아무 있습니다. 나는 단지 몇 열을 선택에 집계를 적용 할. 아파치 스파크 내 파일이 하둡에 저장된으로 도울 수있는 가장 좋은 후보라고 생각합니다. 나는 다음과 같은 프로그램이

public class MyPOJO {
int field1;
String field2; etc
}

JavaSparkContext sc;
JavaRDD<String> data = sc.textFile("path/input.csv");
JavaSQLContext sqlContext = new JavaSQLContext(sc);

JavaRDD<Record> rdd_records = sc.textFile(data).map(
  new Function<String, Record>() {
      public Record call(String line) throws Exception {
         String[] fields = line.split(",");
         MyPOJO sd = new MyPOJO(fields[0], fields[1], fields[2], fields[3]);
         return sd;
      }
});

코드가 잘 실행 위에 나는 액션 rdd_record.saveAsTextFile ( "/로 / 하둡 /")를 적용 할 때; 나는 그것이 RDD의 출력 부분-00000 파일을 만들어 볼 수 있습니다. 그러나 나는 다음을 수행하려고 할 때

JavaSchemaRDD table = sqlContext.applySchema(rdd_records, MyPojo.class);
table.printSchema(); //prints just root and empty lines
table.saveAsTextFile("/to/hadoop/path");//prints part file with [] for each line

나는 왜 MyPojo.class 모든 필드가 문제 빈 JavaSchemaRDD하고 일부 파일에 아무것도 인쇄되지 않은 경우 잘 모릅니다. 나는 스파크에 새로운 오전 안내하시기 바랍니다. 미리 감사드립니다.

해결법

  1. ==============================

    1.마이너 관찰 : 당신은 ... 당신이 그것을 수정하고 실행할 수 있습니다 파일은 탭으로 구분 된,하지만 당신은 라인을 사용하여 분할 보인다 말했다? 데이터가 탭으로 구분되는 경우 SD는 진정한 스키마가 없을 수 있습니다

    마이너 관찰 : 당신은 ... 당신이 그것을 수정하고 실행할 수 있습니다 파일은 탭으로 구분 된,하지만 당신은 라인을 사용하여 분할 보인다 말했다? 데이터가 탭으로 구분되는 경우 SD는 진정한 스키마가 없을 수 있습니다

  2. ==============================

    2.나는 모든 필드에 대한 게터 / 세터를 추가하고 작업 및 JavaSchemaRDD는 데이터가 포함 된 시작 MyPojo 클래스에 Serializable 인터페이스를 구현하는 경우 문서를 스파크에 accoding의.

    나는 모든 필드에 대한 게터 / 세터를 추가하고 작업 및 JavaSchemaRDD는 데이터가 포함 된 시작 MyPojo 클래스에 Serializable 인터페이스를 구현하는 경우 문서를 스파크에 accoding의.

    public class MyPOJO implements Serializable {
        private int field1;
        private String field2;
        public int getField1() {
           returns field1;
        }
        public void setField1(int field1) {
           this.field1 = field1;
        }
        public String getField2() {
           return field2;
        }
        public void setField1(String field2) {
           this.field2 = field2;
        }
        }
    
  3. from https://stackoverflow.com/questions/30082401/apache-spark-javaschemardd-is-empty-even-though-input-rdd-to-it-has-data by cc-by-sa and MIT license