我想获得在ResourceManager上运行的每个应用程序。我正在使用Yarn附带的REST API,特别是
http://<rm http address:port>/ws/v1/cluster/apps
这个API调用返回我正在查找的结果。但我想按开始时间降序进行排序。我得到的结果没有按任何特定的顺序排序(我认为它是使用应用程序id按字典顺序排序的,但我不确定)。文档给出了API接受的参数列表,但我看不到任何对结果进行排序的方法。如果REST API不支持排序,那么是否有其他方法对结果进行排序?
我下面的文件是这个
https://hadoop.apache.org/docs/r2.7.0/hadoop-yarn/hadoop-yarn-site/ResourceManagerRest.html
假设您获得json格式的响应,那么您可以使用python对其进行排序!
http://<rm http address:port>/ws/v1/cluster/apps | python -c "import json,sys;from pprint import pprint; pprint(sorted(json.load(sys.stdin)['apps']['app'], key=lambda k: k['startedTime'], reverse=True))"|grep id
如果使用命令行,可以使用jq
:
curl 'http://<rm http address:port>/ws/v1/cluster/apps' | jq '.apps.app | sort_by(-.startedTime)'