Oozie工作流程:找不到Hive表但它确实存在

时间:2013-04-01 19:11:08

标签: hive cloudera oozie

我有一个oozie工作流程,在4台机器的CDH4集群上运行(一个掌握一切,三个“哑”工人)。 hive Metastore使用mysql(驱动程序存在)在master上运行,oozie服务器也使用mysql在master上运行。使用Web界面,我可以按预期导入和查询配置单元,但是当我在oozie工作流程中执行相同的查询时,它会失败。即使添加“IF EXISTS”也会导致下面的错误。我尝试将连接信息作为属性添加到配置单元作业,但没有成功。

任何人都可以给我一个提示吗?我错过了什么吗?需要进一步的信息吗?

这是作业日志的输出:

  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 个答案:

答案 0 :(得分:12)

问题是其他节点不知道你的MYSQL在哪里,所以你找不到错误表。

你需要做两件事

  1. 复制oozie工作流目录中的hive-site.xml
  2. 在您的Hive操作中告诉oozie使用我的hive-site.xml
  3. 如下所示

    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>

    这应该有用。

    由于

答案 1 :(得分:0)

除了上面提到的关于正确指定hive-site.xml的解决方案之外,我遇到了同样的问题。我也会推荐以下内容。

  1. 检查你是否在类路径中有mysql连接器jar(如果你使用mysql作为Metastore)。
  2. 如果是oozie hive操作,请检查您是否多次添加hive jar。例如它已存在于oozie共享库中,您还复制了workflow / lib