gpt4 book ai didi

java - AWS EMR - 从 java 代码获取主节点 ip

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:17:00 24 4
gpt4 key购买 nike

我想从 Java 代码实现以下流程:

  1. 创建一个新的 AWS EMR 实例(使用 AWS SDK)
  2. 使用 Hive JDBC(需要 IP)连接到 AWS EMR
  3. 在 EMR 上运行我的“SQL”查询
  4. 销毁 AWS EMR(使用 AWS SDK)

我的问题是,当我使用 SDK 创建 EMR 时,我只能检索它的 AWS id,例如 j-XXXXXXXXXXX。但是为了连接到 JDBC,我需要主节点 IP。如何从代码中获取主节点IP?

我正在关注这个 JDBC example page

==更新==
我尝试使用 AmazonElasticMapReduceClient.describeCluster 但在寻找私有(private) ip 时只能获取公共(public) DNS 名称。

最佳答案

AFAIK 没有直接的方法来获取它,但可以使用 2 个 API 调用并在其中搜索来实现:

public String getMasterNodeIp(AmazonElasticMapReduceClient emr, String emrId) throws Exception {
Cluster cluster = emr.describeCluster(new DescribeClusterRequest().withClusterId(emrId)).getCluster();
ListInstancesResult instances = emr.listInstances(new ListInstancesRequest().withClusterId(emrId));
String masterDnsName = cluster.getMasterPublicDnsName();
for (Instance instance : instances.getInstances()) {
if (instance.getPublicDnsName().equals(masterDnsName)) {
return instance.getPrivateIpAddress();
}
}
throw new Exception("Failed to find master node private ip.");
}

关于java - AWS EMR - 从 java 代码获取主节点 ip,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34015473/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com