【发布时间】:2020-04-01 06:34:53
【问题描述】:
我正在从 shell 运行 spark-submit 命令并将输出发送到文件(/tmp/output)。它有 3 种语句 ACCEPTED、RUNNING、FINISHED。如果被接受,则不需要任何东西。如果它正在运行,那么我必须发送邮件。我有发送邮件的逻辑。但是在 tmp/output 文件中会看到多次运行。我不知道多少次。如果我知道我可以睡到那个时候。当完成语句发生时,我需要运行查询。
/tmp/output 文件不是静态的,它将是动态的并附加 ACCEPTED, RUNNING 多次。下面是 /tmp/output 文件的例子。
spark-submit --name sparktTest --deploy-mode cluster --class org.apache.spark.examples.SparkPi /usr/lib/spark/examples/jars/spark-examples.jar 100 > /tmp/output
string=RUNNING
tail -n0 -F /tmp/output | \
while read LINE
do
if echo "$LINE" | grep "$string" 1>/dev/null 2>&1
then
echo "I am in while loop"
aws sns publish --message file:///tmp/url.txt
break
fi
done
stringnew=FINISHED
tail -f /tmp/output | \
while read LINE
do
if echo "$LINE" | grep "$stringnew" 1>/dev/null 2>&1
then
aws sql query execute
break
else
echo "Script failed"
break
fi
done
正在运行的循环成功执行,但立即执行脚本失败。它必须等待 /tmp/output 中的 FINISHED 状态,然后执行 sql 查询。
【问题讨论】:
-
您正在运行什么脚本,您尝试从 shell 执行的 spark 代码是什么。没有人能根据你写的理论来回答
-
现在可以回答了吗。