[HADOOP] 감속기에서 여러 테이블에 출력 쓰기
HADOOP감속기에서 여러 테이블에 출력 쓰기
내 감속기에서 HBase를 여러 테이블에 출력을 쓸 수 있습니까? 나는 다른 블로그 게시물을 통해 갔지만, 심지어 MultiTableOutputFormat를 사용하는 방법을 찾을 수 없습니다 ma에 수.
나는이 언급 : HBase를 여러 테이블에 쓰기
그러나 context.write 호출하는 API 서명을 알아낼 수 없습니다.
감속기 코드 :
public class MyReducer extends TableReducer<Text, Result, Put> {
private static final Logger logger = Logger.getLogger( MyReducer.class );
@SuppressWarnings( "deprecation" )
@Override
protected void reduce( Text key, Iterable<Result> data, Context context ) throws IOException, InterruptedException {
logger.info( "Working on ---> " + key.toString() );
for ( Result res : data ) {
Put put = new Put( res.getRow() );
KeyValue[] raw = res.raw();
for ( KeyValue kv : raw ) {
put.add( kv );
}
context.write( obj, put );
**// I dont know how to give table name here.**
}
}
}
해결법
-
==============================
1.테이블 이름을 확인하려면 당신은 키가 방법 (키를 넣어) context.write하기로 테이블 이름을 전달한다 :
테이블 이름을 확인하려면 당신은 키가 방법 (키를 넣어) context.write하기로 테이블 이름을 전달한다 :
ImmutableBytesWritable key = new ImmutableBytesWritable(Bytes.toBytes("tableName")); context.write(key, put);
한 번 다음에 맵리 듀스 작업을 통해 엄청난 양의 데이터를로드 할 경우 MultiTableHFileOutputFormat을 사용할 수 있도록하지만 흥미로운 일이 될 수 있습니다. 이 출력 형식은 당신이 필요하고 당신은 쉽게 LoadIncrementalHFiles 도구를 사용하여 이러한 파일을로드 할 수있는 모든 HBase를 테이블에 대한 HFiles을 생성합니다 :
hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles /tmp/multiTableJobResult hbaseTable
당신은 문서에서 MultiTableHFileOutputFormat에 대한 자세한 내용을보실 수 있습니다 : http://tech.adroll.com/blog/data/2014/07/15/multi-table-bulk-import.html
from https://stackoverflow.com/questions/37436095/write-output-to-multiple-tables-from-reducer by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 파티션 열 이름이 정확하지 않은 경우 하이브는 모든 파티션을 삭제 (0) | 2019.10.19 |
---|---|
[HADOOP] 감속기이 완료되면 매퍼 전화 (0) | 2019.10.19 |
[HADOOP] 하둡 돼지 분석 기능을 주문한 (0) | 2019.10.19 |
[HADOOP] org.apache.hadoop.mapreduce.lib.input.SequenceFileRecordReader.close에서 java.lang.NullPointerException이 (0) | 2019.10.19 |
[HADOOP] 종료 상태의 하이브 배치 모드 목록? (0) | 2019.10.19 |