В настоящее время у меня есть задание MapReduce, которое использует MultipleOutputs для отправки данных в несколько мест HDFS.После этого я использую клиентские вызовы HBase (вне MR), чтобы добавить некоторые из тех же элементов в несколько таблиц HBase.Было бы неплохо добавить выходы HBase как просто дополнительные MultipleOutputs, используя TableOutputFormat.Таким образом, я бы распространял свою обработку HBase.
Проблема в том, что я не могу заставить это работать.Кто-нибудь когда-либо использовал TableOutputFormat в MultipleOutputs ...?С несколькими выходами HBase?
в основном, я настраиваю свои коллекторы, как это ....
Outputcollector<ImmutableBytesWritable, Writable> hbaseCollector1 = multipleOutputs.getCollector("hbase1", reporter);
Outputcollector<ImmutableBytesWritable, Writable> hbaseCollector2 = multipleOutputs.getCollector("hbase2", reporter);
Put put = new Put(mykey.getBytes());
put.add("family".getBytes(), "column".getBytes(), somedata1);
hbaseCollector1.collect(NullWritable.get(), put);
put = new Put(mykey.getBytes());
put.add("family".getBytes(), "column".getBytes(), somedata2);
hbaseCollector2.collect(newImmutableBytesWritable(mykey.getBytes()), put);
Кажется, это следует общей идее написания hbase.
Часть проблемы, когда я ее набираю, может быть больше в определении задания.Похоже, что MR (и Hbase) хотят глобальный набор параметров, например ....
conf.set(TableOutputFormat.OUTPUT_TABLE, "articles");
для предоставления имени таблицы.Беда в том, у меня есть две таблицы ....
Есть идеи?
Спасибо