복붙노트

[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. ==============================

    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

  2. from https://stackoverflow.com/questions/37436095/write-output-to-multiple-tables-from-reducer by cc-by-sa and MIT license