我的apache-spark(PySpark)代码的输出看起来像这样(每行非常简单的JSON对象):
{'id': 1, 'value1': 'blah', 'value2': 1, 'value3': '2016-07-19 19:35:13'}
{'id': 2, 'value1': 'yada', 'value2': 1, 'value3': '2016-07-19 19:35:13'}
{'id': 3, 'value1': 'blah', 'value2': 2, 'value3': '2016-07-19 19:35:13'}
{'id': 4, 'value1': 'yada', 'value2': 2, 'value3': '2016-07-19 19:35:13'}
{'id': 5, 'value1': 'blah', 'value2': 3, 'value3': '2016-07-19 19:35:13'}
{'id': 6, 'value1': 'yada', 'value2': 4, 'value3': '2016-07-19 19:35:13'}
我想将它们作为文档写入DynamoDB表。我不想将其转换为Map格式(如果可以避免的话)。关于如何解决这个问题的任何想法?关于格式化问题的文档很少。
有一些新的DocumentClient(),但我不能在CLI中使用它。例如,将上述行中的一行作为项目提供给'put-item'aws cli命令会出错:
aws dynamodb put-item --table-name mytable --item file://item.txt
Parameter validation failed:
Invalid type for parameter Item.......
答案 0 :(得分:0)
JSON字符串(如下所示)无法直接在DynamoDB中put-item
编写:
{'id': 1, 'value1': 'blah', 'value2': 1, 'value3': '2016-07-19 19:35:13'}
它需要具有以下格式:
{"id": {"N": 1}, "value1": {"S": "blah"}, "value2": {"N": 1}, "value3": {"S": "2016-07-19 19:35:13"}}
这是因为,从前者开始,DynamoDB无法知道id
,value1
等数据类型。
在我看来,你有两个选择: