2016-07-19 4 views
0

Ich habe eine Ausgabe von meinem Apache-Funken (PySpark) Code, wie diese (sehr einfache JSON-Objekte auf pro Zeile) aussieht:Laden Linien JSON von Amzon S3 DyanmoDB

{'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'} 

Ich möchte schreiben sie in einer DynamoDB-Tabelle als Dokumente. Ich möchte das nicht in das Map-Format konvertieren (wenn ich es vermeiden kann). Irgendwelche Ideen, wie man das schafft? So wenig Dokumentation zum Formatierungsproblem.

Es gibt einige neue DocumentClient(), aber ich kann es nicht von CLI verwenden. Zum Beispiel, als ein Element zum 'put-item' aws cli Befehl gibt Fehler einen der obigen Zeilen Fütterung:

aws dynamodb put-item --table-name mytable --item file://item.txt 

Parameter validation failed: 
Invalid type for parameter Item....... 

Antwort

0

A JSON string, wie die folgenden, nicht direkt in put-item ed DynamoDB sein kann :

{'id': 1, 'value1': 'blah', 'value2': 1, 'value3': '2016-07-19 19:35:13'} 

Es muss ein Format haben, wie:

{"id": {"N": 1}, "value1": {"S": "blah"}, "value2": {"N": 1}, "value3": {"S": "2016-07-19 19:35:13"}} 

das liegt daran, dass aus dem ehemaligen, nicht DynamoDB nicht eine Möglichkeit haben, die Datentypen von id zu wissen, value1 usw.

Wie ich es sehe, haben Sie zwei Möglichkeiten:

  • Ihre Daten transformieren, von dem ersteren zu letzteren durch einige Dienstprogramm. Zum Beispiel jq.
  • Verwenden Sie AWS Data Pipeline.
+0

Vielen Dank. Ich hoffe, dass ich die Daten nicht umwandeln kann. Aber es wird nicht das Ende der Welt sein, wenn ich muss. Wenn ich AWS Data Pipeline verwende, scheint es diese Transformation selbst nicht zu handhaben. Wird es erwartet? – Gopala

+0

Es sollte - ich würde vorschlagen, dass Sie durch seine Dokumentation graben; nachdem ich meine Antwort angenommen habe! –