【问题标题】:Dynamodb requestHandler acceptionDynamodb requestHandler 接受
【发布时间】:2012-08-01 13:55:07
【问题描述】:

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

背景

我正在运行的代码:

  • 从我的本地机器运行时成功将数据插入 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)

【问题讨论】:

  • 更新:似乎有一个旧版本的 aws-sdk 1.1.1 包含在 EMR 节点中!这可能会导致类版本冲突。我不确定解决问题的最佳方法,但正在考虑一些选项并正在运行测试。

标签: java amazon-web-services amazon-dynamodb


【解决方案1】:

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

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

在我的旧 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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-13
    • 2012-11-25
    • 1970-01-01
    • 1970-01-01
    • 2017-05-03
    • 1970-01-01
    相关资源
    最近更新 更多