Dynamodb RequestHandler的验收规范 [英] Dynamodb requestHandler acception

查看:217
本文介绍了Dynamodb RequestHandler的验收规范的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

背景

在code我运行:

  • 成功与数据插入dynamodb从我的本地机器上运行的时候,但

  • 在云中过EMR硕士学位preduce作业运行失败时突然因身份验证。

  • 用于认证的URL端点。

我简单地创建一个像这样的凭据:

 客户端=新DynamoDBClient(新BasicAWSCredentials(
        XXXX,
        XXXXXXXXXXX));
   client.setEndpoint(https://dynamodb.eu-west-1.amazonaws.com);
 

的异常即时得到如下:

 在线程异常主要java.lang.NoSuchFieldError:requestHandlers
        在com.amazonaws.services.securitytoken.AWSSecurityTokenServiceClient.init(AWSSecurityTokenServiceClient.java:214)
        在com.amazonaws.services.securitytoken.AWSSecurityTokenServiceClient.<init>(AWSSecurityTokenServiceClient.java:160)
        在com.amazonaws.auth.STSSessionCredentialsProvider&LT; INIT&GT;(STSSessionCredentialsProvider.java:73)
        在com.amazonaws.auth.SessionCredentialsProviderFactory.getSessionCredentialsProvider(SessionCredentialsProviderFactory.java:96)
        在com.amazonaws.services.dynamodb.AmazonDynamoDBClient.setEndpoint(AmazonDynamoDBClient.java:857)
        在com.amazonaws.services.dynamodb.AmazonDynamoDBClient.init(AmazonDynamoDBClient.java:262)
        在com.amazonaws.services.dynamodb.AmazonDynamoDBClient&LT; INIT&GT;(AmazonDynamoDBClient.java:181)
        在com.amazonaws.services.dynamodb.AmazonDynamoDBClient&LT; INIT&GT;(AmazonDynamoDBClient.java:142)
 

解决方案

真实的答案在这里,是,dynamodb客户不与最新的或当前版本匹配可以呈现出奇怪的反射/类加载错误时我们尝试使用他们在一个现代化的环境。

  • 在AWS罐子在旧EMR AMI实例的类路径可以使用它调用非EMR服务的Hadoop作业正确(最新)AWS罐存在冲突(即如dynamodb,在我们的例子)。

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

  MV $ HOME / lib目录/ AWS-java的SDK-1.1.1.jar $ HOME / lib目录/ AWS-java的SDK-1.1.1.jar.old
 

要在单节点群集上解决这个问题。


此错误的根本原因是什么?是,我使用的是较旧的红宝石弹性-MA preduce客户端,从而导致创建旧的AMI版本在我的电子病历云,这对类路径过时的AWS-SDK罐子。

I have found a cryptic exception when running dynamo inserts in the cloud, any help or clues as to how to debug such an error ?

Background

The code I am running :

  • Succesfully inserts data into dynamodb when run from my local machines, but

  • Fails abruptly due to authentication when running in the cloud in a mapreduce job over EMR.

  • Uses a URL endpoint for authentication.

I simply create credentials like so:

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

The exception Im getting is below:

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)

解决方案

The "real" answer here, is that, dynamodb clients which don't match up with the latest or current versions can exhibit odd reflection / class loading error when we attempt to use them in a modern environment.

  • AWS jars exist on the class path of older EMR AMI instances can conflict with proper (latest) AWS jars used by hadoop job which invokes a non-EMR service (i.e. such as dynamodb, in our case).

On my older AMI instance, I simply issued:

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

To resolve the issue on a single node cluster.


The ROOT cause of this error? was that I was using an older Ruby elastic-mapreduce client, which led to creation of older AMI versions in my EMR cloud, which had obsolete aws-sdk jars on the class path.

这篇关于Dynamodb RequestHandler的验收规范的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆