如何从 hdinsight 集群上的代码 运行 获取集群详细信息,例如 clusterID

How to get cluster details like clusterID from code running on hdinsight cluster

我需要使用 Azure API 的 ClusterInner 对象或一些集群信息,如集群 ID 等

但是要获取 ClusterInner 对象或集群 ID,我需要向 API 提供身份验证对象,但是 此代码将 运行 在同一个 HDInsight 集群上 所以理想情况下它不会要求凭据或使用一些 env 等(我的 spark 作业已经 运行 在此集群上并且 spark 作业需要此信息)。

是否有任何 API 或替代方案可以从同一个 运行 HDInsight 集群获取此信息。

根据评论编辑我的答案

这种特殊的方法不是一种干净的方法,但您可以获得详细信息。 注意:这仅适用于 HDInsight 群集。 部署细节只能从头节点中提取。您必须在 /etc/ambari-server/conf/ambari.properties 中查找该字段 server.jdbc.database_name。例如,如果它是 v40e8b2c1e26279460ca3e8c0cbc75af8f8AmbariDb,那么您可以 trim 前 3 个字符和 String.The 遗漏字符串的最后 8 个字符将是您的 clusterid。 您可以在作业中使用 Linux 脚本从文件中提取详细信息。 下面是shell命令

 #!/bin/bash
    string=$(sed -n 's/server.jdbc.database_name=//p' /etc/ambari-server/conf/ambari.properties)
    POS=3
    LEN=32
    clusterid=${string:$POS:$LEN} 

你可以在Python/Java中嵌入脚本。我正在使用Python来实现这个

import os
import subprocess
subprocess.call(['sh', '/path/to/script.sh'])