2017-03-14 2 views
0

Au lieu d'une table imbriquée, tout ce que j'obtiens est un titre très long contenant la commande sql mais aucune erreur. Pourquoi cela fonctionne-t-il mais n'entraîne pas correctement les données json?Pourquoi AWS athena crée ma table sous forme de chaîne au lieu d'un tableau d'objets imbriqués

CREATE external TABLE ranked (
    airlineRankings array<struct< 
    overall_rating:TINYINT, 
    seat_comfort_rating:TINYINT, 
    cabin_staff_rating:TINYINT, 
    food_beverages_rating:TINYINT, 
    inflight_entertainment_rating:TINYINT, 
    ground_service_rating:TINYINT, 
    wifi_connectivity_rating:TINYINT, 
    value_money_rating:TINYINT, 
    recommended:TINYINT, 
    review_amount:TINYINT, 
    count:TINYINT, 
    iata:string, 
    icao:string, 
    airline_link:string, 
    call_sign:string, 
    country:string, 
    airline:string 
     >> 
    ) 
    ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' 
    LOCATION 's3://**********/' 

JSON format de données:

{ 
    "airlineRankings": [{ 
     "iata": "", 
     "icao": "EVY", 
     "airline_link": "34 Squadron, Royal Australian Air Force", 
     "call_sign": "", 
     "country": "Australia", 
     "airline": "34 Squadron, Royal Australian Air Force", 
     "overall_rating": 0, 
     "seat_comfort_rating": 0, 
     "cabin_staff_rating": 0, 
     "food_beverages_rating": 0, 
     "inflight_entertainment_rating": 0, 
     "ground_service_rating": 0, 
     "wifi_connectivity_rating": 0, 
     "value_money_rating": 0, 
     "recommended": 0, 
     "review_amount": 0 
    } 
] 
} 

Répondre

1

Votre LDD est très bien. Si vous rencontrez des problèmes lors de l'interrogation du tableau, il est probable que le "désassemblage" de l'objet tableau soit manquant.

Un exemple de requête pour la structure ressemblerait à ceci:

select myRecord.icao from ranked 
CROSS JOIN UNNEST(airlinerankings) AS myTable (myRecord); 
+0

HIVE_CURSOR_ERROR: Row est pas un objet JSON valide - JSONException: Un texte JSONObject doit se terminer par '}' à 2 [caractère 3 ligne 1] Renvoyez cette erreur. C'est un json valide .... – deek

+0

Se pourrait-il que votre JSON contienne \ n caractères? –

+0

J'ai ajouté le format de données JSON à la question originale. oui, certaines des valeurs de chaîne ont des caractères spéciaux et non des clés. – deek