2017-09-07 5 views
1

J'ai un jeu de données enregistré dans Glue/Athena, appelez le my_db.table. Je suis capable de l'interroger via Athena et tout semble généralement en ordre.AWS Glue impossible d'accéder au jeu de données d'entrée

J'essaie d'utiliser ce tableau dans un emploi de colle, mais reçois le message d'erreur assez opaque:

py4j.protocol.Py4JJavaError: An error occurred while calling o54.getCatalogSource. 
: java.lang.Error: No classification or connection in my_db.table 

Cela semble indiquer que la colle ne peut pas voir l'entrée de catalogue pour mon tableau, ou ne peut pas utiliser les informations dans cette entrée, mais je n'ai pas plus de visibilité que cela.

Quelqu'un a-t-il rencontré cette erreur et qu'est-ce qui pourrait l'être?

+0

Avez-vous essayé de créer une table avec Glue Crawler? Dans mon projet, seules les tables créées par crawler fonctionnent correctement avec Jobs. Aussi les tables générées par Glue Crawler sont lisibles par Athena – MP23

Répondre

3

Le message d'erreur décrit bien le problème - il n'y avait pas de classification pour la table interrogée.

Tables créées par la colle sont enregistrés avec une classification - csv, parquet, orc, avro, json. Voir Creating Tables Using Athena for AWS Glue Jobs.

La table que j'ai créée 'manuellement' via Athena n'avait pas de classifcation. Voir la capture d'écran ci-dessous à partir de la page "Tables" de collage.

enter image description here

La solution est simple: à la fin de l'utilisateur du script CREATE TABLE doit ajouter une classification propriété comme si

CREATE EXTERNAL TABLE IF NOT EXISTS my_db.my_table (
    `id` int, 
    `description` string 
) 
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' 
WITH SERDEPROPERTIES (
    'serialization.format' = ',', 
    'field.delim' = ',', 
    'collection.delim' = 'undefined', 
    'mapkey.delim' = 'undefined' 
) LOCATION 's3://my_bucket/' 
TBLPROPERTIES ('classification'='csv'); 

Maintenant, la table a une classification dans l'interface de colle et est accessible par un travail de colle.