HBase Mapreduce выводит в hdfs & HBASe - PullRequest
2 голосов
/ 14 марта 2012

У меня есть программа mapreduce, которая сначала сканирует таблицу HBase.

Я хочу, чтобы вывод некоторых редукторов шел в hdfs, а вывод редукторов записывался в таблицу hbase. Можно ли настроить редуктор на вывод в двух разных местах / форматах, подобных этому?

Ответы [ 3 ]

3 голосов
/ 16 марта 2012

Редуктор можно настроить на использование нескольких файлов для вывода с использованием MulitpleOutputs класса .Документация в верхней части этого класса предоставляет наглядный пример для записи в несколько файлов.Однако, поскольку нет встроенного выходного формата для записи в HBase, вы можете записать второй поток в определенное место в HDFS, а затем использовать другое задание для его вставки в HBase.

1 голос
/ 07 июня 2012

я думаю, что несколько выходов могут сделать работу .. чк это http://hadoop.apache.org/mapreduce/docs/r0.21.0/api/org/apache/hadoop/mapreduce/lib/output/MultipleOutputs.html

1 голос
/ 26 марта 2012

Если вы не хотите писать слишком много кода, просто откройте таблицу в методе установки вашего маппера или редуктора и сделайте оператор put в вашей таблице hbase. С другой стороны, напишите свою работу так, чтобы выходной файл был файлом hdfs. Таким образом, вы получаете возможность писать в hbase и hdfs.

Чтобы быть более сложным, когда вы делаете context.write (), вы записываете в файл hdfs, а с другой стороны, table.put может произойти, когда вы делаете пут.

Кроме того, не забудьте закрыть таблицу и все остальное в вашем методе cleanup (). Единственным фоном является то, что если, скажем, 1000 картографов, ваше подключение к таблице будет открыто 1000 раз, но в любой заданной точке только максимальное количество ваших картографов действительно будет работать, так что, вероятно, будет 50, в зависимости от вашей настройки. У меня работает как минимум!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...