2017-06-12 95 views
0

我想寫一個簡單的地圖,只有hadoop流作業從hdfs讀取數據並將其推送到vertica。Hadoop Streaming Job不能在OOzie工作

我寫了一個shell腳本如下

./vsql -c "copy $TABLE from stdin delimiter E'\t' direct null '\\N';" -U $DBUSER -w $DBPWD -h $DBHOST -p $DBPORT 

我已經創建了Oozie的工作流程爲:

<action name="loadToVertica"> 
     <map-reduce> 
          <job-tracker>${jobTracker}</job-tracker> 
          <name-node>${nameNode}</name-node> 
          <prepare> 
            <delete path="${nameNode}/user/$USER/output/${exportDataDate}"/> 
          </prepare> 
          <streaming> 
            <mapper>shell export.sh</mapper> 
          </streaming> 
          <configuration> 
            <property> 
              <name>oozie.libpath</name> 
              <value>${wfsBasePath}/libs</value> 
            </property> 
            <property> 
              <name>mapred.input.dir</name> 
              <value>${nameNode}/user/$USER$/{exportDataDate}</value> 
            </property> 
            <property> 
              <name>mapred.output.dir</name> 
              <value>${nameNode}/user/$USER/output/${exportDataDate}</value> 
            </property> 
            <property> 
              <name>mapred.reduce.tasks</name> 
              <value>0</value> 
            </property> 
          </configuration> 
          <file>${wfsBasePath}/libs/${STREAMING_JAR_PATH}#${STREAMING_JAR_PATH}</file> 
          <file>${wfsBasePath}/libs/oozie-sharelib-streaming-4.2.0.2.5.3.0-37.jar#oozie-sharelib-streaming-4.2.0.2.5.3.0-37.jar</file> 
          <file>${wfsBasePath}/scripts/export.sh#export.sh</file> 
          <file>${wfsBasePath}/config/vsql#vsql</file> 
        </map-reduce> 
      <ok to="end"/> 
      <error to="end"/> 
     </action> 

當我運行工作中的這一狀態是失敗/沒有任何錯誤信息喪生。

+0

關於什麼的日誌?嘗試先不使用Oozie來執行它。 – FieryCat

+0

沒有oozie它運行良好。數據已成功加載到Vertica @FieryCat –

+0

有時它可能與文件夾權限有關。日誌會給出一個答案:'cd/var/log/oozie /; ls'或'oozie job -oozie $ OOZIE_URL -info {job id}' – FieryCat

回答

0

在#!/ bin/sh之後添加-e幫助我追蹤實際錯誤。

在腳本中添加-e選項後,日誌中出現錯誤代碼。

在此之後,第一行會看起來像:

#!/bin/sh -e