2017-01-11 6 views
1

私は、ResourceManagerで実行されたすべてのアプリケーションを取得したかったのです。YarnのREST APIによって返された結果を並べ替える

http://<rm http address:port>/ws/v1/cluster/apps 

このAPI呼び出しは、私が探している結果を返します。しかし、私は降順で開始時刻でソートしたいと思っています。私が得た結果は、特定の順序でソートされていません(アプリケーションIDを使用して辞書的にソートされていると思いますが、わかりません)。ドキュメントは、APIが受け入れるパラメータのリストを示していますが、結果を並べ替える方法はありません。 REST APIがソートをサポートしていない場合、結果を並べ替える他の方法はありますか?私は、次の午前

ドキュメントはあなたがJSON形式で応答を取得すると仮定すると、この

https://hadoop.apache.org/docs/r2.7.0/hadoop-yarn/hadoop-yarn-site/ResourceManagerRest.html

答えて

0

では、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 
+0

まあはい、私はクライアント側でそれを並べ替えることができます。しかし、私は、REST APIがソートされた方法でデータを返すようなものを探していました。 – thisisshantzz

0

コマンドラインを使用している場合は、jqを使用することができます。

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

私はクライアント側でデータをソートするのではなく、REST APIがソートされた方法でデータを返すようにする方法を探していました。しかし、助けてくれてありがとう。 – thisisshantzz

関連する問題