Сценарий оболочки, который проверяет файл в hdfs - PullRequest
0 голосов
/ 18 сентября 2018

Я пытаюсь создать скрипт для проверки отсутствия какого-либо файла в пути hdfs.Идея состоит в том, чтобы включить его в рабочий процесс oozie, который, если ни один файл не найден, завершается с ошибкой и не продолжается в потоке

ALTRAFI="/input/ALTrafi*.txt"
ALTDATOS="/ALTDatos*.txt"
ALTARVA="/ALTarva*.txt"
TRAFCIER="/TrafCier*.txt"

if hdfs dfs -test -e $ALTRAFI; then
   echo "[$ALTRAFI] Archive not found"
   exit 1
fi
if hdfs dfs -test -e $ALTDATOS; then
   echo "[$ALTDATOS] Archive not found"
   exit 2
fi
if hdfs dfs -test -e $ALTARVA; then
   echo "[$ALTARVA] Archive not found"
   exit 3
fi   
if hdfs dfs -test -e $TRAFCIER; then
   echo "[$TRAFCIER] Archive not found"
   exit 4
fi 

Но сценарий не завершается ошибкой, когда он не находит файл и продолжает потокрабочего процесса в oozie

oozie flow:

<start to="ValidateFiles"/>
<kill name="Kill">
    <message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<action name="ValidateFiles">
    <shell xmlns="uri:oozie:shell-action:0.2">
        <job-tracker>${jobTracker}</job-tracker>
        <name-node>${nameNode}</name-node>
        <configuration>
            <property>
              <name>mapred.job.queue.name</name>
              <value>${queueName}</value>
            </property>
            <property>
                <name>tez.lib.uris</name>
                <value>/hdp/apps/2.5.0.0-1245/tez/tez.tar.gz</value>
            </property>
        </configuration>
        <exec>/produccion/apps/traficotasado/ValidateFiles.sh</exec>
        <file>/produccion/apps/traficotasado/ValidateFiles.sh#ValidateFiles.sh</file> <!--Copy the executable to compute node's current working directory -->
    </shell>
    <ok to="CopyFiles"/>
    <error to="Kill"/>
</action>   
  <action name="CopyFiles">
    <shell xmlns="uri:oozie:shell-action:0.2">
        <job-tracker>${jobTracker}</job-tracker>
        <name-node>${nameNode}</name-node>
        <configuration>
            <property>
              <name>mapred.job.queue.name</name>
              <value>${queueName}</value>
            </property>
            <property>
                <name>tez.lib.uris</name>
                <value>/hdp/apps/2.5.0.0-1245/tez/tez.tar.gz</value>
            </property>
        </configuration>
        <exec>/produccion/apps/traficotasado/CopyFiles.sh</exec>
        <file>/produccion/apps/traficotasado/CopyFiles.sh#CopyFiles.sh</file> <!--Copy the executable to compute node's current working directory -->
    </shell>
    <ok to="DepuraFilesStage"/>
    <error to="Kill"/>
</action>

Спасибо за помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...