Ich habe folgendes Json-Objekt für eine Teilnahme der Person zu Konferenzen:Amazon Athena - Nested JSON gibt
{"conferences_attended": [
{"conference_name": "dreamforce",
"date": "2017",
"city": "san francisco",
"state": "ca"},
{"conference_name": "RampUp",
"date": "2016",
"city": "san francisco",
"state": "ca"},
],
"last_name" : "doe"}
ich den folgenden Code ausführen haben Tabelle zu erstellen, zeigt auf, wo ich die in s3 gespeicherten Daten
CREATE EXTERNAL TABLE IF NOT EXISTS my_db.attendees (
`last_name` string,
`conferences_attended` array< struct<
conference_name:string,
date:string,
city:string,
state:string,
>>,
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES (
'serialization.format' = '1'
) LOCATION 's3://**'
TBLPROPERTIES ('has_encrypted_data'='false');
Jetzt habe ich 2 Teile zu meiner Frage.
1) Wie frage ich ab, um auf die Daten zuzugreifen, die in verschachtelten JSON-Objekten enthalten sind? Die beiden folgenden Abfragen funktionieren nicht und auch nicht viele ähnliche.
SELECT conferences_attended
FROM attendees;
SELECT conferences_attended.conference_name
FROM attendees;
2) Wie kann ich Abfrage-Ergebnisse nur einen bestimmten Teil des verschachtelten json passend zu kommen?
SELECT *
FROM attendees
WHERE conferences_attended.conference_name like '%force%';
ich Fehler bin immer das mich führt zu glauben, ich brauche die Daten Datentypen oder un-Nest zu ändern oder etwas similr ... Danke für die Hilfe und Links zu Informationen über diese Art von Aktionen zu unterstützen. Hinweis, ich habe die folgenden Links gelesen und fand sie hilfreich, aber immer noch nicht meine Bedürfnisse zu lösen. http://docs.aws.amazon.com/athena/latest/ug/rows-and-structs.html und http://thornydev.blogspot.com/2013/07/querying-json-records-via-hive.html und viele andere ...
Schließlich irgendwelche Ratschläge oder Ressourcen für die Unterschiede zwischen ‚org.apache.hive.hcatalog.data.JsonSerDe‘ und ‚org.openx.data.jsonserde.JsonSerDe‘ sind willkommen .