Ich habe einige JSON-Dateien in einem S3-Bucket gespeichert, wobei jede Datei mehrere Elemente der gleichen Struktur hat. Zum BeispielSpeichern Sie mehrere Elemente in JSON-Dateien in AWS Athena
[{"eventId":"1","eventName":"INSERT","eventVersion":"1.0","eventSource":"aws:dynamodb","awsRegion":"us-west-2","image":{"Message":"New item!","Id":101}},{"eventId":"2","eventName":"MODIFY","eventVersion":"1.0","eventSource":"aws:dynamodb","awsRegion":"us-west-2","image":{"Message":"This item has changed","Id":101}},{"eventId":"3","eventName":"REMOVE","eventVersion":"1.0","eventSource":"aws:dynamodb","awsRegion":"us-west-2","image":{"Message":"This item has changed","Id":101}}]
Ich möchte eine Tabelle in Athena entsprechend den oben genannten Daten erstellen.
Die Abfrage, die ich für die Erstellung der Tabelle geschrieben:
CREATE EXTERNAL TABLE IF NOT EXISTS sampledb.elb_logs2 (
`eventId` string,
`eventName` string,
`eventVersion` string,
`eventSource` string,
`awsRegion` string,
`image` map<string,string>
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES (
'serialization.format' = '1',
'field.delim' = ' '
) LOCATION 's3://<bucketname>/';
Aber wenn ich eine SELECT-Abfrage wie folgt tun,
SELECT * FROM sampledb.elb_logs4;
ich folgendes Ergebnis:
1 {"eventid":"1","eventversion":"1.0","image":{"id":"101","message":"New item!"},"eventsource":"aws:dynamodb","eventname":"INSERT","awsregion":"us-west-2"} {"eventid":"2","eventversion":"1.0","image":{"id":"101","message":"This item has changed"},"eventsource":"aws:dynamodb","eventname":"MODIFY","awsregion":"us-west-2"} {"eventid":"3","eventversion":"1.0","image":{"id":"101","message":"This item has changed"},"eventsource":"aws:dynamodb","eventname":"REMOVE","awsregion":"us-west-2"}
Der gesamte Inhalt der JSON-Datei wird hier als ein Eintrag ausgewählt.
Wie kann ich jedes Element der JSON-Datei als einen Eintrag lesen?
Bearbeiten: Wie kann ich jede Unterspalte des Bildes, d. H. Jedes Element der Karte lesen?
Danke.
ich habe das gleiche Problem wie Q1 wie meine Daten von sendgrid kommt und Ich habe nicht viel Auswahl über das Datenformat :( – CpILL