2013-09-18 2 views
2

Я пытаюсь сравнить две разные таблицы в HBase, чтобы я мог автоматизировать проверку некоторых процессов ETL, которые мы используем для перемещения данных в HBase. Каков наилучший способ сравнить две таблицы в HBase?Как разбить две таблицы в HBase

Мой случай использования ниже:

То, что я пытаюсь сделать, это создать одну таблицу, которая будет мой ожидаемый результат. Эта таблица будет содержать все данные, которые я ожидаю создать, выполнив код команды с входным файлом. Затем я проведу разницу между фактической выходной таблицей и ожидаемой выходной таблицей, чтобы проверить целостность тестируемого компонента.

+1

Не могли бы вы рассказать о том, что вы имеете в виду, сравнивая таблицы? Я не вижу реальной причины дублировать данные на две таблицы? Вы хотите видеть как diff или ищете какой-то конкретный случай использования? Может быть, разработка вашего примера использования поможет понять проблему немного больше. –

+0

Да, я пытаюсь получить diff. Я добавил свой сценарий к моему первоначальному вопросу. Я инженер QA для команды, которая много работает с HBase, и я пытаюсь автоматизировать мой процесс тестирования, и мне трудно найти инструменты для сравнения для HBase. – RHicke

+1

К сожалению, вы не можете получить разницу двух таблиц в HBase. Если вы не напишите свой собственный код типа diff. Однако, если ключи следуют определенному шаблону, вы можете выполнять сканирование для новых ключей, которые добавляются во время ETL, или вы можете попросить разработчиков поместить некоторые новые метаданные для индексации последних дополнительных ключей. Затем вы можете выполнить сканирование этих метаданных и посмотреть, что изменилось. Хотелось бы, чтобы было лучшее решение. Но, помимо написания специальной утилиты, я не могу придумать много способов сделать это. –

ответ

2

Я ничего не знаю из коробки, но вы можете написать карту с несколькими таблицами/уменьшить.

Мапперы будут просто выдавать ключи из каждой таблицы (со значением, являющимся всеми значениями ключа hbase, плюс имя таблицы) Редуктор может убедиться, что он имеет 2 записи каждой клавиши и сравнивает значения ключа. Когда есть только один ключ, он может видеть, какая таблица не синхронизирована.

2

Я знаю, что этот вопрос немного стар, но насколько велики таблицы? Если они будут вписываться в память, вы можете загрузить их в Pig с помощью HBaseStorage, а затем использовать функцию Pig's in DIFF для сравнения полученных пакетов.

Это будет работать даже с большими таблицами, которые не вписываются в память, согласно документам, но это будет очень медленно.

+0

Это может сработать. Это необходимо для работы с таблицами, которые не вписываются в память. Я смог заставить его работать, используя работу с несколькими таблицами с уменьшением задания с использованием HBase и HADOOP Apis в Java. – RHicke

Смежные вопросы