2012-03-14 4 views
2

HBase 테이블을 먼저 스캔하는 mapreduce 프로그램이 있습니다.HBase Map을 HBASe로 출력합니다.

일부 감속기 출력을 hdfs로 이동하고 일부 감속기 출력을 hbase 테이블에 기록하려고합니다. 감속기를 이와 같이 두 개의 다른 위치/형식으로 출력하도록 구성 할 수 있습니까?

답변

3

감속기는 MulitpleOutputsclass을 사용하여 여러 파일을 출력하도록 구성 할 수 있습니다. 이 클래스의 맨 위에있는 문서는 여러 파일에 대한 명확한 예를 제공합니다. 그러나 HBase에 쓰기 위해 Outputformat이 내장되어 있지 않으므로 HDFS의 특정 위치에 두 번째 스트림을 쓰고 다른 작업을 사용하여 HBase에 삽입하는 것을 고려할 수 있습니다.

1

너무 많은 코드를 작성하지 않으려면 매퍼 또는 감속기의 설정 메소드에서 테이블을 열고 hbase 테이블에 put 문을 수행하기 만하면됩니다. 반면 출력 파일이 hdfs 파일이되도록 작업을 작성하십시오. 이렇게하면 hbase과 hdfs에 모두 쓸 수 있습니다.

더 정교하게하려면 context.write()를 할 때 hdfs 파일에 쓰고, put을하면 table.put이 발생할 수 있습니다.

또한 테이블과 cleanup() 메소드의 다른 것을 닫는 것을 잊지 마십시오. 유일한 배경은, 테이블 연결이 1000 번 열릴 것이라고 가정한다면, 매퍼마다 최대 매퍼 만 실행되므로 설정에 따라 아마 50이됩니다. 적어도 나를 위해 일한다!

관련 문제