2017-09-27 4 views
2

J'essaie de créer une table externe sur des fichiers csv avec Aws Athena avec le code ci-dessous mais la ligne TBLPROPERTIES ("skip.header.line.count"="1") ne fonctionne pas: elle ne saute pas la première ligne (en-tête) du fichier csv.Aws Athena - Créer une table externe en sautant la première ligne

CREATE EXTERNAL TABLE mytable 
(
    colA string, 
    colB int 
) 

ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' 
WITH SERDEPROPERTIES (
    'separatorChar' = ',', 
    'quoteChar' = '\"', 
    'escapeChar' = '\\' 
    ) 
STORED AS TEXTFILE 
LOCATION 's3://mybucket/mylocation/' 
TBLPROPERTIES (
    "skip.header.line.count"="1") 

Un conseil?

Répondre

2

Cette fonctionnalité n'a pas encore été implémentée. Voir Abhishek @ réponse AWS here: «Nous y travaillons et fera rapport dès que nous avons un résultat Désolé pour ce nouveau Cela a fini par prendre plus de temps que ce que prévu. ».

Ma solution a été de prétraiter les données avant de créer la table:

  1. télécharger le fichier csv de bande S3
  2. la tête à l'aide bash sed -e 1d -e 's/\"//g' file.csv > file-2.csv
  3. télécharger les résultats à son propre dossier sur S3
  4. créer le tableau
+1

Cette fonctionnalité est disponible sur AWS Athena depuis le 2018-01-19. voir https://docs.aws.amazon.com/athena/latest/ug/release-note-2018-01-19.html > Prise en charge de l'ignorance des en-têtes. Vous pouvez utiliser la propriété skip.header.line.count lors de la définition de tables pour permettre à Athena d'ignorer les en-têtes. – shawnzhu

1

Juste essayé le "skip.header.line.count"="1" et semble fonctionner correctement maintenant.

+0

En fait, ça ne marche plus. Je ne sais pas quand cela sera vraiment réparé. –

+0

TBLPROPERTIES ('skip.header.line.count' = '1') .. a bien fonctionné pour moi –

+0

il commence à fonctionner depuis 2018-01-19. voir https://docs.aws.amazon.com/athena/latest/ug/release-note-2018-01-19.html – shawnzhu