需要帮助将参数从xargs传递到后续的Hadoop命令。
我从此命令得到如下结果。
yarn application -list -appStates RUNNING | grep <user> | awk '{print $1}'
以上命令的结果如下。
17/09/19 12:24:36 INFO client.ConfiguredRMFailoverProxyProvider:
Failing over to rm21 Total Application-Id
application_1505017974932_14847
application_1505017974932_14815
application_1505017974932_14810
application_1505017974932_14784
application_1505017974932_14796
application_1505017974932_14778
我需要能够将上面的输出逐个传递给下面的命令。
yarn application -movetoqueue <application_ID of above output> -queue myqueue
请你帮忙找到合适的命令来实现同样的目标吗?
类似的设置在下面的命令中对我有效,但在上面没有,因为上面的命令有n
a)
yarn application -list -appStates RUNNING | grep <user> | awk '{print $1}' | xargs -n 1 yarn application -kill
这是另一种方式..
b。)for yarn application -list -appStates RUNNING | grep <user> | awk '{print $1}’
中的应用;做纱线申请-kill&#34; $ app&#34 ;;完成
感谢你的帮助。
答案 0 :(得分:1)
xargs
读取 STDIN
流数据,并将每一行转换为与命令对应的空格分隔参数。
xargs可能无法解决的一些原因:
所以,我建议如下:
for appid in `yarn application -list -appStates RUNNING | grep user|awk '{print $1}'` ; do
yarn application -movetoqueue "${appid}" -queue myqueue;
done