Рабочий процесс Oozie: таблица Hive не найдена, но она существует


У меня есть рабочий процесс oozie, работающий на кластере CDH4 из 4 машин (один мастер для всего, три "тупых" рабочих). Hive metastore работает на ведущем сервере с использованием mysql (драйвер присутствует), сервер oozie также работает на ведущем сервере с использованием mysql. Используя веб-интерфейс, я могу импортировать и запрашивать hive, как и ожидалось, но когда я делаю те же запросы в рамках рабочего процесса oozie, он терпит неудачу. Даже добавление "если существует" приводит к ошибке ниже. Я попытался добавить информацию о соединении как свойства к заданию улья без всякого успеха.

Может ли кто-нибудь дать мне подсказку? Я что-нибудь пропустил? Нужна еще какая-нибудь информация?

Это выходные данные журнала задания:

  Script [drop.sql] content:
  ------------------------
  DROP TABLE IF EXISTS performance_log;

  ------------------------

  Hive command arguments :
  -f
  drop.sql

  =================================================================

  >>> Invoking Hive command line now >>>

  Intercepting System.exit(10001)

  <<< Invocation of Main class completed <<<

  Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.HiveMain], exit code [10001]

  Oozie Launcher failed, finishing Hadoop job gracefully

И это сообщение об ошибке:

  FAILED: SemanticException [Error 10001]: Table not found performance_log
  Intercepting System.exit(10001)
  Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.HiveMain], exit code [10001]
2 6

2 ответа:

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

Вам нужно сделать 2 вещи

  1. копировать сайт-улей.xml в каталоге рабочих процессов oozie
  2. в своем ульевом действии скажите оози, что используете мой улей-сайт.xml

Что-то вроде ниже

action name="hive-node"> <hive xmlns="uri:oozie:hive-action:0.2"> <job-tracker>${jobTracker}</job-tracker> <name-node>${nameNode}</name-node> <job-xml>hive-site.xml</job-xml>

Это должно сработать.

Спасибо

Я столкнулся с той же проблемой, кроме упомянутого выше решения об указании hive-site.xml правильно. Я бы также рекомендовал следовать следующим вещам.

  1. проверьте, есть ли у вас mysql connector jar (в случае, если вы используете mysql в качестве метастора), доступный в classpath.
  2. в случае действий с ульем oozie просто проверьте, не добавляете ли вы ульевые банки несколько раз. например, он уже присутствует в oozie share lib, и вы также скопировали его в workflow / lib