Hadoop OOZIE工作流:配置单元表不存在,但在HDFS中创建了目录

Hadoop OOZIE工作流:配置单元表不存在,但在HDFS中创建了目录,hadoop,mapreduce,hive,cloudera,oozie,Hadoop,Mapreduce,Hive,Cloudera,Oozie,我正在尝试使用OOZIE工作流运行HIVE操作。以下是蜂巢行动: 创建表abc(INT) 我可以在HDFS中找到内部表(在/user/hive/warehouse下创建的目录abc),但是当我从hive>触发命令SHOW TABLES时,我无法看到该表 这是workflow.xml文件: <workflow-app xmlns="uri:oozie:workflow:0.2" name="hive-wf"> <start to="hiveac"/> <actio

我正在尝试使用
OOZIE
工作流运行
HIVE
操作。以下是蜂巢行动:

创建表abc(INT)

我可以在HDFS中找到内部表(在
/user/hive/warehouse
下创建的目录
abc
),但是当我从
hive>
触发命令
SHOW TABLES
时,我无法看到该表

这是
workflow.xml
文件:

<workflow-app xmlns="uri:oozie:workflow:0.2" name="hive-wf">
 <start to="hiveac"/>
 <action name="hiveac">
    <hive xmlns="uri:oozie:hive-action:0.2">
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <!-- <prepare> <delete path="${nameNode}/user/${wf:user()}/case1/out"/> </prepare> -->
        <!-- <job-xml>hive-default.xml</job-xml>-->
            <configuration>
                <property>
                    <name>oozie.hive.defaults</name>
                    <value>hive-default.xml</value>
                </property>
                <property>
                    <name>mapred.job.queue.name</name>
                    <value>${queueName}</value>
                </property>
            </configuration>
            <script>script.q</script>
            <!-- <param>INPUT=/user/${wf:user()}/case1/sales_history_temp4</param>
            <param>OUTPUT=/user/${wf:user()}/case1/out</param> -->
        </hive>
  <ok to="end"/>
  <error to="fail"/>
 </action>
   <kill name="fail">
   <message>Pig Script failed!!!</message>
   </kill>
   <end name="end"/>
</workflow-app>
<configuration>
<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://localhost/metastore</value>
  <description>JDBC connect string for a JDBC metastore</description>
</property>

<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>org.apache.derby.jdbc.EmbeddedDriver</value>
  <description>Driver class name for a JDBC metastore</description>
</property>

<property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>hiveuser</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>password</value>
</property>
<property>
  <name>datanucleus.autoCreateSchema</name>
  <value>false</value>
</property>
<property>
  <name>datanucleus.fixedDatastore</name>
  <value>true</value>
</property>
<property>
  <name>hive.stats.autogather</name>
  <value>false</value>
</property>
</configuration>
nameNode=hdfs://localhost:8020
jobTracker=localhost:8021
queueName=default
oozie.libpath=/user/oozie/shared/lib
#oozie.use.system.libpath=true
oozie.wf.application.path=${nameNode}/user/my/jobhive
这是
job.properties
文件:

<workflow-app xmlns="uri:oozie:workflow:0.2" name="hive-wf">
 <start to="hiveac"/>
 <action name="hiveac">
    <hive xmlns="uri:oozie:hive-action:0.2">
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <!-- <prepare> <delete path="${nameNode}/user/${wf:user()}/case1/out"/> </prepare> -->
        <!-- <job-xml>hive-default.xml</job-xml>-->
            <configuration>
                <property>
                    <name>oozie.hive.defaults</name>
                    <value>hive-default.xml</value>
                </property>
                <property>
                    <name>mapred.job.queue.name</name>
                    <value>${queueName}</value>
                </property>
            </configuration>
            <script>script.q</script>
            <!-- <param>INPUT=/user/${wf:user()}/case1/sales_history_temp4</param>
            <param>OUTPUT=/user/${wf:user()}/case1/out</param> -->
        </hive>
  <ok to="end"/>
  <error to="fail"/>
 </action>
   <kill name="fail">
   <message>Pig Script failed!!!</message>
   </kill>
   <end name="end"/>
</workflow-app>
<configuration>
<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://localhost/metastore</value>
  <description>JDBC connect string for a JDBC metastore</description>
</property>

<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>org.apache.derby.jdbc.EmbeddedDriver</value>
  <description>Driver class name for a JDBC metastore</description>
</property>

<property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>hiveuser</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>password</value>
</property>
<property>
  <name>datanucleus.autoCreateSchema</name>
  <value>false</value>
</property>
<property>
  <name>datanucleus.fixedDatastore</name>
  <value>true</value>
</property>
<property>
  <name>hive.stats.autogather</name>
  <value>false</value>
</property>
</configuration>
nameNode=hdfs://localhost:8020
jobTracker=localhost:8021
queueName=default
oozie.libpath=/user/oozie/shared/lib
#oozie.use.system.libpath=true
oozie.wf.application.path=${nameNode}/user/my/jobhive
日志没有给出任何错误,例如:

stderr logs

Logging initialized using configuration in jar:file:/var/lib/hadoop-hdfs/cache/mapred/mapred/local/taskTracker/distcache/3179985539753819871_-620577179_884768063/localhost/user/oozie/shared/lib/hive-common-0.9.0-cdh4.1.1.jar!/hive-log4j.properties
Hive history file=/tmp/mapred/hive_job_log_mapred_201603060735_17840386.txt
OK
Time taken: 9.322 seconds
Log file: /var/lib/hadoop-hdfs/cache/mapred/mapred/local/taskTracker/training/jobcache/job_201603060455_0012/attempt_201603060455_0012_m_000000_0/work/hive-oozie-job_201603060455_0012.log  not present. Therefore no Hadoop jobids found
我遇到了一条类似的线索:


但这并没有解决我的问题。请让我知道如何解决这个问题。

我已经有几个月没有使用Oozie了(由于法律原因没有保存档案),而且它是V4.x,所以有点猜测

  • 将有效的
    hive site.xml
    上传到某个HDFS位置
  • 在运行Hive类之前,告诉Oozie将所有这些属性注入启动器
    配置
    ,以便它继承所有属性,并使用
    /some/hdfs/path/hive site.xml
  • 删除对
    oozie.hive.defaults的任何引用

  • 警告:所有这些都假设您的沙盒集群有一个持久元存储——即您的
    hive site.xml
    不指向每次都会被擦除的Derby嵌入式数据库

    看起来您指示Hive使用Derby实例化“沙盒”元存储,而不是连接到真正的元存储(MySQL?),因此创建表被写入Derby临时数据库。。。那么lost.BTW,你为什么要使用古老的
    工作流:0.2
    ?你安装了什么版本的Oozie?我相信
    Oozie.hive.defaults
    是一个遗留的东西,忘了它吧——除非你有一个非常旧的版本。你有一个真正的集群,还是只有一个假节点?如果有多个节点,您在默认类路径中是否有有效的
    hive.xml
    ?我使用的是
    Oozie客户端构建版本:3.2.0-cdh4.1.1
    。这是一个运行在CDH 4.1.1上的非常旧的版本,它使用
    工作流:0.2
    oozie.hive.defaults
    。我有一个单节点集群。请让我知道在我的
    元存储中连接
    mysql
    需要做哪些更改。我尝试将
    oozie.hive.defaults
    更改为
    ,但我得到了错误:
    无法连接到元存储,因此将其恢复为
    oozie.hive.defaults
    。请说明上面发布的
    hive default.xml
    中有什么错误,以及我需要做哪些更改才能指向正确的持久元存储