【问题标题】:Sorting results returned by Yarn's REST APIYarn 的 REST API 返回的排序结果
【发布时间】:2017-01-11 21:08:23
【问题描述】:

我想获取在 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

【问题讨论】:

    标签: rest hadoop hadoop-yarn


    【解决方案1】:

    假设你得到的是 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
    

    【讨论】:

    • 嗯,是的,我可以在客户端对其进行排序。但我一直在寻找能让 REST api 以排序方式返回数据的东西。
    【解决方案2】:

    如果你使用的是命令行,你可以使用jq:

    curl 'http://<rm http address:port>/ws/v1/cluster/apps' | jq '.apps.app | sort_by(-.startedTime)'
    

    【讨论】:

    • 我正在寻找一种让 REST API 以排序方式返回数据的方法,而不必在客户端对数据进行排序。不过感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2022-06-22
    • 2017-05-20
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-02
    • 1970-01-01
    相关资源
    最近更新 更多