gpt4 book ai didi

java - Dynamodb requestHandler 接受

转载 作者:行者123 更新时间:2023-11-30 04:43:34 24 4
gpt4 key购买 nike

我在云中运行 dynamo inserts 时发现了一个神秘的异常,关于如何调试此类错误有任何帮助或线索吗?

背景

我正在运行的代码:

  • 从本地计算机运行时成功将数据插入 dynamodb,但是

  • 通过 EMR 在云中运行 MapReduce 作业时,由于身份验证而突然失败。

  • 使用 URL 端点进行身份验证。

我只是像这样创建凭据:

   client=new DynamoDBClient(new BasicAWSCredentials(
"XXXX",
"XXXXXXXXXXX));
client.setEndpoint("https://dynamodb.eu-west-1.amazonaws.com");

我遇到的异常如下:

Exception in thread "main" java.lang.NoSuchFieldError: requestHandlers
at com.amazonaws.services.securitytoken.AWSSecurityTokenServiceClient.init(AWSSecurityTokenServiceClient.java:214)
at com.amazonaws.services.securitytoken.AWSSecurityTokenServiceClient.<init>(AWSSecurityTokenServiceClient.java:160)
at com.amazonaws.auth.STSSessionCredentialsProvider.<init>(STSSessionCredentialsProvider.java:73)
at com.amazonaws.auth.SessionCredentialsProviderFactory.getSessionCredentialsProvider(SessionCredentialsProviderFactory.java:96)
at com.amazonaws.services.dynamodb.AmazonDynamoDBClient.setEndpoint(AmazonDynamoDBClient.java:857)
at com.amazonaws.services.dynamodb.AmazonDynamoDBClient.init(AmazonDynamoDBClient.java:262)
at com.amazonaws.services.dynamodb.AmazonDynamoDBClient.<init>(AmazonDynamoDBClient.java:181)
at com.amazonaws.services.dynamodb.AmazonDynamoDBClient.<init>(AmazonDynamoDBClient.java:142)

最佳答案

这里的“真正”答案是,当我们尝试在现代环境中使用它们时,与最新或当前版本不匹配的 dynamodb 客户端可能会出现奇怪的反射/类加载错误。

  • 旧 EMR AMI 实例的类路径上存在的 AWS jar 可能与调用非 EMR 服务(即在我们的示例中为 dynamodb)的 hadoop 作业使用的正确(最新)AWS jar 冲突。

在我的旧 AMI 实例上,我只是发出:

mv $HOME/lib/aws-java-sdk-1.1.1.jar $HOME/lib/aws-java-sdk-1.1.1.jar.old 

解决单节点集群上的问题。

<小时/>

此错误的根本原因是什么?问题是我使用的是较旧的 Ruby elastic-mapreduce 客户端,这导致在我的 EMR 云中创建较旧的 AMI 版本,该云的类路径上有过时的 aws-sdk jar。

关于java - Dynamodb requestHandler 接受,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11660441/

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