2016-03-06 47 views
0

我正在嘗試使用OOZIE工作流程運行HIVE操作。下面是蜂巢行動:OOZIE工作流程:HIVE表格不存在,但在HDFS中創建目錄

create table abc (a INT);

我可以找到在HDFS內部表(目錄abc得到/user/hive/warehouse下創建的),但是當我從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> 

這是hive-default.xml文件:

<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> 

這是job.properties文件:

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 

我碰到了類似的線程:Tables created by oozie hive action cannot be found from hive client but can find them in HDFS

但這並沒有解決我的問題。請讓我知道如何解決這個問題。

+0

看起來像您指示Hive使用Derby實例化**「沙箱」metastore **,而不是連接到真正的Metastore(MySQL?),因此CREATE TABLE被寫入Derby臨時DB ...然後丟失。 –

+0

順便說一句,爲什麼你使用古老的'工作流程:0.2'?你安裝了什麼版本的Oozie? –

+0

我相信'oozie.hive.defaults'是遺留的東西,忘了它 - 除非你有一個veeeeeeeeeeeery舊版本。 –

回答

0

我沒有用了Oozie了幾個月(並沒有保留的,因爲法律原因存檔)反正它是V4.x的所以它的一些猜測...

  1. 上傳您的有效hive-site.xml到HDFS的地方
  2. 告訴Oozie的運行蜂巢課前注入的啓動Configuration所有這些特性,使得它繼承了所有這些,與 <job-xml>/some/hdfs/path/hive-site.xml</job-xml>
  3. 刪除任何參考oozie.hive.defaults

警告:所有假定您的沙箱集羣具有持續 Metastore - 即你的hive-site.xml不指向被擦除每次Derby嵌入式數據庫!

+0

我試着將'oozie.hive.defaults'改爲'',但是我得到錯誤:'Unable to connect to the metastore',then reverted it to oozie.hive.defaults'。請在''hive-default'中提出錯誤信息。上面貼出的xml',以及我需要做些什麼改變來指向正確的持續性Metastore – user182944

相關問題