6

我有一个 oozie 工作流,在 4 台机器的 CDH4 集群上运行(一个主控一切,三个“哑”工人)。Hive Metastore 使用 mysql(存在驱动程序)在主服务器上运行,oozie 服务器也使用 mysql 在主服务器上运行。使用 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]
4

2 回答 2

12

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

你需要做两件事

  1. 复制 oozie 工作流目录中的 hive-site.xml
  2. 在您的 Hive 操作中,告诉 oozie 使用我的 hive-site.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>

这应该有效。

谢谢

于 2013-04-03T00:31:23.110 回答
0

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

  1. 检查类路径中是否有 mysql 连接器 jar(如果您使用 mysql 作为元存储)。
  2. 如果发生 oozie 蜂巢操作,只需检查您是否没有多次添加蜂巢罐。例如,它已经存在于 oozie 共享库中,并且您还复制到了工作流/库中
于 2013-12-30T09:39:39.260 回答