2017-02-13 67 views
2

我試圖從dynamodb控制檯界面導入數據,但無法獲得成功。AmazonServiceException:Supplied AttributeValue爲空,必須包含其中一個受支持的數據類型

數據是

{"_id":{"s":"d9922db0-83ac-11e6-9263-cd3ebf92dec3"},"applicationId":{"S":"2"},"applicationName":{"S":"Paperclip"},"ip":{"S":"127.0.0.1"},"objectInfo":{"S":"elearning_2699"},"referalUrl":{"S":"backported data"},"url":{"S":""},"userAgent":{"S":""},"userEmail":{"S":"[email protected]"},"userId":{"S":"508521"},"userName":{"S":"Karthik"},"created":{"S":"1486983137000"},"verb":{"S":"submitproject"},"dataVals":{"S":"{\"projectid\":5,\"name\":\"Test 1\",\"domain\":\"apparel\",\"submittype\":[\"Writeup\",\"Screenshots\"],\"passcriteria\":\"Percentage\",\"taemail\":\"[email protected]\",\"attemptNo\":1,\"submitDate\":1467784988}"},"eventTime":{"S":"1467784988000"}} 

我得到以下錯誤

Error: java.lang.RuntimeException: com.amazonaws.AmazonServiceException: Supplied AttributeValue is empty, must contain exactly one of the supported datatypes (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: ValidationException; Request ID: GECS2L57CG9ANLKCSJSB8EIKVRVV4KQNSO5AEMVJF66Q9ASUAAJG) at org.apache.hadoop.dynamodb.DynamoDBFibonacciRetryer.handleException(DynamoDBFibonacciRetryer.java:107) at org.apache.hadoop.dynamodb.DynamoDBFibonacciRetryer.runWithRetry(DynamoDBFibonacciRetryer.java:83) at org.apache.hadoop.dynamodb.DynamoDBClient.writeBatch(DynamoDBClient.java:220) at org.apache.hadoop.dynamodb.DynamoDBClient.putBatch(DynamoDBClient.java:170) at org.apache.hadoop.dynamodb.write.AbstractDynamoDBRecordWriter.write(AbstractDynamoDBRecordWriter.java:91) at org.apache.hadoop.mapred.MapTask$DirectMapOutputCollector.collect(MapTask.java:844) at org.apache.hadoop.mapred.MapTask$OldOutputCollector.collect(MapTask.java:596) at org.apache.hadoop.dynamodb.tools.ImportMapper.map(ImportMapper.j errorStackTrace amazonaws.datapipeline.taskrunner.TaskExecutionException: Failed to complete EMR transform. at amazonaws.datapipeline.activity.EmrActivity.runActivity(EmrActivity.java:67) at amazonaws.datapipeline.objects.AbstractActivity.run(AbstractActivity.java:16) at amazonaws.datapipeline.taskrunner.TaskPoller.executeRemoteRunner(TaskPoller.java:136) at amazonaws.datapipeline.taskrunner.TaskPoller.executeTask(TaskPoller.java:105) at amazonaws.datapipeline.taskrunner.TaskPoller$1.run(TaskPoller.java:81) at private.com.amazonaws.services.datapipeline.poller.PollWorker.executeWork(PollWorker.java:76) at private.com.amazonaws.services.datapipeline.poller.PollWorker.run(PollWorker.java:53) at java.lang.Thread.run(Thread.java:745) Caused by: amazonaws.datapipeline.taskrunner.TaskExecutionException: Error: java.lang.RuntimeException: com.amazonaws.AmazonServiceException: Supplied AttributeValue is empty, must contain exactly one of the supported datatypes (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: ValidationException; Request ID: GECS2L57CG9ANLKCSJSB8EIKVRVV4KQNSO5AEMVJF66Q9ASUAAJG) at org.apache.hadoop.dynamodb.DynamoDBFibonacciRetryer.handleException(DynamoDBFibonacciRetryer.java:107) at org.apache.hadoop.dynamodb.DynamoDBFibonacciRetryer.runWithRetry(DynamoDBFibonacciRetryer.java:83) at org.apache.hadoop.dynamodb.DynamoDBClient.writeBatch(DynamoDBClient.java:220) at org.apache.hadoop.dynamodb.DynamoDBClient.putBatch(DynamoDBClient.java:170) at org.apache.hadoop.dynamodb.write.AbstractDynamoDBRecordWriter.write(AbstractDynamoDBRecordWriter.java:91) at org.apache.hadoop.mapred.MapTask$DirectMapOutputCollector.collect(MapTask.java:844) at org.apache.hadoop.mapred.MapTask$OldOutputCollector.collect(MapTask.java:596) at org.apache.hadoop.dynamodb.tools.ImportMapper.map(ImportMapper.java:26) at org.apache.hadoop.dynamodb.tools.ImportMapper.map(ImportMapper.java:13) at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:65) at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:432) at org.apache.hadoop.mapred.MapTask.run(MapTask.java:343) at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:175) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:415) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1548) at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:170) Caused by: com.amazonaws.AmazonServiceException: Supplied AttributeValue is empty, must contain exactly one of the supported datatypes (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: ValidationException; Request ID: GECS2L57CG9ANLKCSJSB8EIKVRVV4KQNSO5AEMVJF66Q9ASUAAJG) at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:1182) at com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:770) at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:489) at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:310) at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.invoke(AmazonDynamoDBClient.java:1772) at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.batchWriteItem(AmazonDynamoDBClient.java:730) at amazonaws.datapipeline.cluster.EmrUtil.runSteps(EmrUtil.java:286) at amazonaws.datapipeline.activity.EmrActivity.runActivity(EmrActivity.java:63)

難道我做錯了什麼?

回答

1

錯誤:了java.lang.RuntimeException:com.amazonaws.AmazonServiceException:提供的AttributeValue是空的,必須包含完全支持的數據類型之一(服務:AmazonDynamoDBv2;狀態代碼:400;錯誤代碼:ValidationException這是錯誤你得到。

下面是可能的原因

  1. DynamoDB不支持空值,所以你應該刪除這些 字段(@notionquest同意)
  2. 字段的值應該具有適當的數據類型,如表所示
+0

感謝@Priyabrata,問題發生是因爲空值。 – rahulb

0

我們必須在這裏一步一步地經歷。發生上述錯誤是因爲某些屬性的值爲空。 DynamoDB不支持屬性的空值。

例如:URL,等的userAgent

請取出空的屬性,然後再試一次。我可以保證上述問題將得到解決。但是,其他情況也可能是錯誤的。

+0

感謝您的回覆。那麼我們如何傳遞一個空值呢? – rahulb

+0

DynamoDB不接受屬性的空值。如果你想要這些屬性,你可能需要設置一些默認值。沒有解決方法。 – notionquest

0

在我的情況下,我得到了同樣的問題,因爲從 映射模板無效的參數發送。

#set($inputRoot = $input.path('$')) 
{ 
    "userId": "$input.params('userId')", 
    "userEmail": "$input.params('userEmail')", 
    "userName": "$input.params('userName')", 
    "userPassword": "$input.params('userPassword')" 
} 

在這裏我發送了額外的參數userId,這就是爲什麼發生錯誤。


而對於空白值,添加項目時,主鍵屬性是唯一必需的屬性。屬性值不能爲空。字符串和二進制類型屬性的長度必須大於零。設置類型屬性不能爲空。具有空值的請求將被拒絕,並出現ValidationException異常。 請檢查這個文件。

http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html

我希望這會幫助你。

0

我在運行aws中的還原管道時遇到同樣的問題。經過一段時間後,我發現問題。 AMI版本的恢復與導出的版本不同。

我有其他管道工作正常。我仍然不知道爲什麼在一起案件中沒有。基本上,我檢查了AMI版本,它們是3.8.0的出口版本和3.9.0的恢復版本。我將還原更改爲3.8.0,它可以正常工作。

在這裏您會找到更好的explanation

我的兩分錢。

+0

雖然這可能會在理論上回答這個問題,[這將是更可取的](/ meta.stackoverflow.com/q/8259)在這裏包括答案的基本部分,並提供鏈接供參考。 – GhostCat

相關問題