需要帮助将参数从 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
一个)
yarn application -list -appStates RUNNING | grep <user> | awk '{print $1}' | xargs -n 1 yarn application -kill
这是另一种方式..
b.) yarn application -list -appStates RUNNING | grep <user> | awk '{print $1}’
中的应用程序;执行 yarn application -kill "$app";完成
感谢您对此的帮助。
最佳答案
xargs
读取 STDIN
流数据并将每一行转换为以空格分隔的命令参数。
xargs 在您的情况下可能不起作用的一些原因:
- 使用 xargs,此命令的参数 “yarn application -movetoqueue 'application_ID' -queue myqueue" 在其末尾传递。
- 并非所有应用程序/工具都接受多个空格分隔 论点。
- 您的命令的结果是一个包含特殊字符的字符串,应该用引号引起来。
所以,我建议如下:
for appid in `yarn application -list -appStates RUNNING | grep user|awk '{print $1}'` ; do
yarn application -movetoqueue "${appid}" -queue myqueue;
done
关于linux - 将 xargs 值作为参数传递给后续 YARN 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46305560/