【问题标题】:Get EMR Cluster ID inside Java Spark application在 Java Spark 应用程序中获取 EMR 集群 ID
【发布时间】:2021-11-12 11:02:27
【问题描述】:

我有用 Java 编写并通过 AWS EMR 执行的 Spark 应用程序。我想在我的 Java 代码中获取 EMR 集群的 ID。我尝试使用以下方法:

String emrClusterID = System.getenv("EMR_CLUSTER_ID");

但它返回 null 集群 ID。我不想使用 EMR API 来获取正在运行的集群列表,然后从那里获取 ID,因为我不知道代码内部的集群名称是什么,并且可以有多个处于运行状态的集群具有相同的名称。那么,如何从 Spark Java 应用程序的代码中获取正在运行的集群的集群 ID?

【问题讨论】:

    标签: java apache-spark jar amazon-emr


    【解决方案1】:

    您可以在 EMR 服务器本地文件系统上读取和解析 JSON 文件 /mnt/var/lib/info/job-flow.json

    属性jobFlowId是clusterId。

    一个基本的实现(缺少错误处理)可能是这样的:

    import java.io.File;
    import java.util.Map;
    import com.fasterxml.jackson.databind.ObjectMapper;
    
    public class EmrInfo {
    
      static final File EMR_JOB_FLOW = new File("/mnt/var/lib/info/job-flow.json");
    
      public static String getEmrId() {
          ObjectMapper mapper = new ObjectMapper();
          Map<?, ?> map = mapper.readValue(EMR_JOB_FLOW, Map.class);
          return map.getOrDefault("jobFlowId", "UNKNOWN_ID");
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-12-30
      • 1970-01-01
      • 2018-10-11
      • 2018-09-18
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 2017-06-03
      • 2018-12-12
      相关资源
      最近更新 更多