Запись в несколько схем HCatalog в одном редукторе?

У меня есть набор потоков Hadoop, которые были написаны до того, как мы начали использовать Hive. Когда мы добавили Hive, мы настроили файлы данных как внешние таблицы. Теперь мы думаем о переписывании потоков для вывода их результатов с использованием HCatalog. Нашей основной мотивацией для внесения изменений является использование динамического разделения.

Одно из препятствий, с которыми я сталкиваюсь, заключается в том, что некоторые из наших редукторов генерируют несколько наборов данных. Сегодня это делается с помощью файлов с побочными эффектами, поэтому мы записываем каждый тип записи в отдельный файл за один шаг сокращения, и мне интересно, каковы мои варианты сделать это с HCatalog.

Очевидно, что один из вариантов состоит в том, чтобы каждое задание генерировало только один тип записи, обрабатывая данные один раз для каждого типа. Я хотел бы избежать этого.

Другой вариант для некоторых заданий - изменить нашу схему так, чтобы все записи хранились в одной схеме. Очевидно, что эта опция работает хорошо, если данные были просто разбиты на части для разбиения бедняков, так как HCatalog позаботится о разбиении данных на основе полей. Однако для других заданий типы записей не согласованы.

Кажется, что я мог бы использовать интерфейсы Reader/Writer для передачи набора контекстов писателя, по одному на схему, но я не очень продумал это (и я только смотрел на HCatalog в течение дня, поэтому я могу неправильно понимать интерфейс Reader/Writer).

У кого-нибудь есть опыт написания нескольких схем за один шаг сокращения? Любые указатели будут высоко оценены.

Благодарю.

Эндрю

1 ответ

Насколько я могу судить, правильный способ сделать это - использовать класс MultiOutputFormat. Самой большой помощью для меня был тест TestHCatMultiOutputFormat в Hive.

Эндрю

Другие вопросы по тегам