Вывод Hadoop в таблицу HBase и редуктор

1

Я пытаюсь написать задание MapReduce, которое анализирует CSV файл, сохраняет данные в HBase и выполняет функцию уменьшения за один раз. В идеале я бы хотел

  1. Mapper выводит хорошие записи в таблицу HBase GOOD
  2. Неверные записи Mapper для HBase Table BAD
  3. Mapper отправляет все хорошие данные в редуктор, используя ключ
  4. Также хотел бы обновить третью таблицу с указанием наличия новых данных. Эта таблица будет содержать базовую информацию о данных и дате. Скорее всего, одна или две записи в CSV файл.

Я знаю, как сделать 1 и 2 с помощью HBase MultiTableOutputFormat, но не MultiTableOutputFormat, как делать 3 и 4.

Любые указатели на то, как это сделать, очень ценятся.

У меня есть несколько соображений о том, как это сделать:

Для 1 и 2 у меня был бы ImmutableBytesWriteable как ключ, а MultiTableOutputFormat позаботится о хранении из Mapper. Но для 3 я хотел бы, чтобы ключ был Text.

Для # 4, должен ли я делать это в Mapper

  1. Сканирование третьей таблицы HBase для входа, если не там, в противном случае пропущено. Мне это не нравится, поскольку он чувствует себя очень неэффективно.
  2. ИЛИ должен ли я поддерживать список в Mapper и записывать в HBase в методе очистки Mappper?
  3. Есть ли лучший способ сделать это?
Теги:
hadoop
hbase
mapreduce
multiple-tables

1 ответ

1
  • mapper читает csv, устанавливая KeyValueTextInputFormat.

  • В коде картографа есть некоторая логика, чтобы отличать хорошие и плохие записи и помещать их в Hbase, используя Put (Hbase Api calls).

В настройке Mapper обработчик hbaseTable может быть проинтегрирован.

Хорошая запись может быть передана редуктору с использованием context.write (ключ, значение) и собрана в редукторе

Ещё вопросы

Сообщество Overcoder
Наверх
Меню