2015-02-02 3 views

답변

0

내가 아는 한, Spark SQL 쿼리에서받은 결과는 SchemaRDD입니다. SchemaRDD는 표준 RDD에서 부여한 모든 작업을 실행할 수있는 엔터티입니다. 귀하의 질문으로 돌아가서 질의 결과를 클래스 (결과적으로 객체)에 매핑하는 유일한 방법은 고전적인 맵 작업을 사용하여 수동으로 SchemaRDD의 반환 된 행에 저장된 정보를 조작하는 것입니다.

0

여기서 테이블을 쿼리하고 클래스 YourClass의 개체로 변환하여 JavaRDD으로 만든 다음 파일에 쓰는 방법입니다. 파일의 각 줄은 YourClass.toString()

DataFrame sqlQuery = sqlContext.sql("SELECT a,b,c FROM table"); 
JavaRDD<Triple> resultRows = sqlQuery.javaRDD().map(
     new Function<Row, YourClass>() { 
      public YourClass call(Row row) { 
       YourClass t = new YourClass(row.getString(0), row.getString(1), row.getString(2)); 
       return t; 
      } 
     }); 
resultRows.saveAsTextFile(outputFolderPath);