0
HBaseの複数のテーブルに出力を書き込むことはできますか?私は別のブログ記事を見ましたが、道を見つけることができませんでした。たとえMultiTableOutputFormat
を使っていました。 REDUCERから複数のテーブルに出力を書き込む
しかし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.**
}
}
}
はいその通りです(+この出力形式は、必要なすべてのHBaseのテーブルのためのHFilesを作成し、簡単に
LoadIncrementalHFiles
ツールでこれらのファイルを読み込むことができます1)上記の方法でキーとしてテーブルを渡す必要があります。あなたがマッパを使って書いているなら、以下に言及されている通りです。 // rowKeyは、lineBytesから生成されたhbaseのrowKeyです。 \t \t Put put = new Put(rowKey); \t \t // KeyValueオブジェクトを作成する \t \t put.add(kv); \t \t context.write( "actions"、put); //アクションテーブルに書き込む –