Hive Oozie工作流:未找到配置单元表,但它确实存在

Hive Oozie工作流:未找到配置单元表,但它确实存在,hive,cloudera,oozie,Hive,Cloudera,Oozie,我得到了一个oozie工作流,运行在一个由4台机器组成的CDH4集群上(每台机器都有一个主控,三个“愚蠢”工人)。hive元存储使用mysql在主机上运行(有驱动程序),oozie服务器也使用mysql在主机上运行。使用web界面,我可以按预期导入和查询配置单元,但当我在oozie工作流中执行相同的查询时,它会失败。即使添加“IF EXISTS”也会导致下面的错误。我试图将连接信息作为属性添加到配置单元作业中,但没有成功 有人能给我一个提示吗?我错过什么了吗?需要进一步的信息吗 这是作业日志的输

我得到了一个oozie工作流,运行在一个由4台机器组成的CDH4集群上(每台机器都有一个主控,三个“愚蠢”工人)。hive元存储使用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

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

你需要做两件事

  • 在oozie工作流目录中复制hive-site.xml
  • 在您的配置单元操作中,告诉oozie使用my-Hive-site.xml
  • 像下面这样

    action name=“配置单元节点”>
    ${jobTracker}
    ${nameNode}
    hive site.xml

    这应该行得通


    谢谢

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

  • 检查类路径中是否有mysql连接器jar(如果您使用mysql作为元存储)
  • 在oozie蜂箱操作的情况下,只需检查您是否多次添加蜂箱罐。e、 g.它已经存在于oozie共享库中,并且您还复制了工作流/lib

  • 工作起来很有魅力。谢谢如果您处于色调,请记住在工作流属性中执行此操作,以便将其应用于工作流中的所有配置单元节点/步骤。这是基于Oozie当前的理想解决方案。老实说,我们需要一种方法让oozie从一个集中的位置选择它,而不是自己将它复制到HDFS中的oozie作业目录。毕竟,对于hive-site.xml中的每个更改,我们必须在每个Oozie作业目录中进行替换。在我看来,错误/不一致是很容易发生的。这篇博客文章演示了如何在Oozie工作流中执行。
      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]