2017-02-15 5 views
0

У меня есть эта среда:Вопросы о Улей

  • среды Haddop (1 мастер, 4 ведомых) с несколькими приложениями: ambari, оттенок, улья, sqoop, HDFS ... Сервер в производстве (отдельный от hadoop) с базой данных mysql.

Моя цель:

  • Оптимизировать запросы, сделанные на этом сервере MySQL, которые медленно выполнить сегодня.

Что я сделал:

  • Я импортировал данные MySQL в HDFS с помощью Sqoop.

Мои сомнения:

  1. Я не могу сделать выбирает направить в HDFS с помощью улей?
  2. Нужно ли загружать данные в Улей и делать запросы?
  3. Если новые данные введены в базу данных mysql, что является лучшим способом , чтобы получить эти данные и вставить их в HDFS, а затем вставить в Hive again? (Может быть, в реальном времени)

Спасибо заранее

ответ

3

Я не могу сделать выбор прямо в HDFS с помощью Hive?

Вы можете. Создайте External Table в улье, указав местоположение hdfs. Затем вы можете выполнить любой HQL над ним.

Нужно ли загружать данные в Улей и делать запросы?

В случае внешней таблицы вам не нужно загружать данные в улей; ваши данные находятся в одном каталоге HDFS.

Если новые данные введены в базу данных mysql, то каков наилучший способ получить эти данные.

Для этого можно использовать Sqoop Incremental Import. Он будет извлекать только недавно добавленные/обновленные данные (в зависимости от инкрементного режима).Вы можете создать sqoop job и запланировать его в соответствии с вашими потребностями.

+0

Вместо # 1 и # 2 вы также можете попробовать данные sqoop с помощью '--hive-import'. Ваши данные сразу же будут использоваться с Hive и Impala. Дополнительная информация для OP о вводе данных за один шаг и возможность запроса с более быстрой Impala [здесь] (http://stackoverflow.com/questions/42116606/sqoop-create-impala-parquet-table/42130964#42130964). Ответ приносит данные в более общем формате паркета. – spijs

+0

Спасибо за внимание! –

+0

@ sola.carol рад помочь! –

1

Вы можете попробовать Impala, которая намного быстрее, чем улья в случае запросов SQL. Вам нужно определить таблицы, которые, скорее всего, будут определять некоторый разделитель, формат хранения и где данные хранятся на HDFS (я не знаю, какие данные вы храните). Затем вы можете написать SQL-запросы, которые будут принимать данные из HDFS.

У меня нет опыта приема данных в реальном времени из реляционных баз данных, однако вы можете попробовать планировать задания Sqoop с помощью cron.

+0

Благодарим за внимание! –