2013-02-21 3 views
0

Справочная информация:Как создать конвейер данных из таблицы hive в реляционную базу данных

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

Чтобы решить вышеуказанную проблему, я создал таблицу утиных утилит, которая загружается запросом HIVE SQL. После загрузки новых данных в промежуточную таблицу я загружаю новые журналы в реляционную базу данных с помощью sqoop Query.

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

Это приводит к ошибочному выводу аналитики.

Вопросы:

1). Как сделать транзакционную транзакцию данных Sqoop, т. Е. Либо экспортируются все записи, либо ни одна из них не экспортируется.

2). Каков наилучший способ построения этого конвейера данных, где весь этот процесс таблицы Hive -> Staging Table -> Relational Table.

Технические детали:

Hadoop версия 1.0.4
Hive- 0.9.0
Sqoop - 1.4.2

ответ

0

Вы должны быть в состоянии сделать это с помощью sqoop с помощью опции называется --staging-table. То, что это делает, в основном действует как вспомогательная таблица, которая используется для обработки экспортированных данных. Поэтапные данные, наконец, перемещаются в таблицу назначения в одной транзакции. Таким образом, вы не должны иметь проблемы согласованности с частичными данными.

(источник: Sqoop documentation)

+0

У меня есть мастер-таблица (Master), в которой я запрашиваю и храню данные во второй таблице улей, которая так же как и реляционная база данных. Теперь, если я использую параметр -staging-table, тогда он создаст еще одну временную таблицу.ИМХО, это будет большой успех, поскольку я занимаюсь большим объемом данных. Есть ли лучший способ сделать это? – SleepyThread

1

улей и Hadoop такие большие технологии, которые могут позволить ваши аналитики для запуска внутри задач MapReduce, выполняя аналитику очень быстро за счет использования нескольких узлов.

Используйте это в свою пользу. Прежде всего, разделите таблицу Hive. Я предполагаю, что вы храните все журналы в одной таблице Hive. Таким образом, при выполнении ваших запросов и у вас есть

SQL .... ГДЕ LOG_DATA> '17/10/2013 00:00:00'

Тогда вы effictivelly запрос все данные, что у вас есть собранных до сих пор. Вместо если вы используете разделы - скажем, один день вы можете определить в запросе

WHERE p_date = 20131017 ИЛИ p_date = 20131016

улей разделяется и теперь умеет читать только те два файла Так скажем, у вас есть 10 ГБ журналов в день - тогда у БЛИЖНЕГО ВРЕМЕНИ на несколько секунд в приличном кластере Hadoop

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

  • Нет связанных вопросов^_^