我要做的是为文件夹中的每个数据集运行几个hadoop作业。我正在使用如下所示的循环:
hdfs dfs -ls | grep -o '[0-9]*x[0-9]*$'|while read line;
do
echo "Operator: Spark KMeans, Dataset: $line"
./bspark.sh spark_kmeans $line 6 20
sleep 30s
done
有些工作可能会失败。如果发生错误,是否可以继续下一行?
答案 0 :(得分:0)
我能想到的一些事情:
while
循环正在使用 STDIN 。我想知道bspark.sh
是否也在使用 STDIN 并且可能正在吃你的输入。bspark.sh
以某种方式杀死你的程序吗?你可以尝试几件事:
echo
放在bspark.sh
行前面。而不是实际执行bspark.sh
看看命令是什么样的。这将让您了解脚本实际上在做什么。使用set -xv
打开shell调试。 -v
在shell插入之前显示命令行,-x
在shell混淆之后显示命令行。您可以将$PS4
设置为\$LINENO>
以查看打印调试信息时的行号。让您了解错误发生的位置。
set +xv
关闭调试。我发现通过我的shell脚本将它们添加到各个地方以查看正在进行的操作是有用的。