Несколько входов с DBInputFormat в Hadoop - PullRequest
1 голос
/ 02 декабря 2011

В моей базе данных есть несколько таблиц, где каждая таблица имеет свой тип сущности. У меня есть схема Avro, которую я использую в hadoop, которая представляет собой объединение всех полей этих разных типов сущностей плюс поле типа сущности.

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

Данные постоянно добавляются в эти таблицы базы данных, поэтому мне нужно иметь возможность настроить DBInputFormat для каждого типа сущности / dbtable, чтобы только получать новые данные и правильно выполнять разбиения.

В основном мне нужны функциональные возможности DBInputFormat или DataDrivenDBInputFormat, но также возможность составлять их, аналогично тому, что вы можете делать с путями и множественными входами.

1 Ответ

1 голос
/ 02 декабря 2011

Создайте представление из N входных таблиц и установите представление в DBInputFormat # setInput. По Cloudera статья . Итак, я думаю, что данные не должны обновляться в таблице за время выполнения задания.

Hadoop может потребоваться выполнить один и тот же запрос несколько раз. Он должен будет возвращать одни и те же результаты каждый раз. Поэтому любые одновременные обновления вашей базы данных и т. Д. Не должны влиять на запрос, выполняемый вашим заданием MapReduce. Это может быть достигнуто путем запрета записи в таблицу во время выполнения задания MapReduce, ограничения запроса MapReduce с помощью предложения, такого как «insert_date <вчера», или выгрузки данных во временную таблицу в базе данных перед запуском процесса MapReduce. </p>

Оценка сред, поддерживающих обработку в реальном времени, таких как Storm , HStreaming , S4 и Strembases . Некоторые из них находятся на вершине Hadoop, а некоторые нет, некоторые - FOSS, а некоторые - коммерческие.

...