web-dev-qa-db-fra.com

Aws Athena - Créer une table externe en sautant la première ligne

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.

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?

8
nicola

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

11
Filippo Loddo

C'est une fonctionnalité qui n'a pas encore été implémentée. Voir la réponse de Abhishek @ AWS ici

"Nous y travaillons et ferons rapport dès que nous aurons un résultat Je suis désolé pour cela encore. Cela a pris plus de temps que ce que nous avions prévu."

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

  1. téléchargez le fichier csv de S3 
  2. effacez l'en-tête en utilisant bash sed -e 1d -e 's/\"//g' file.csv > file-2.csv
  3. télécharger les résultats dans son propre dossier sur S3 
  4. créer la table
5
Luba Gloukhova

J'ai récemment essayé:

TBLPROPERTIES ('skip.header.line.count'='1')

Et cela fonctionne bien maintenant. Ce problème est survenu lorsque l'en-tête de colonne sous forme de chaîne (horodatage) et les enregistrements contenant les horodatages réels. Mes requêtes bombarderaient car elles scanneraient la table et trouveraient une chaîne au lieu de timestamp

Quelque chose comme ça: 

ts
2015-06-14 14: 45: 19.537
2015-06-14 14: 50: 20.546

0
Raj

Lorsque cette question a été posée, il n'y avait pas de support pour sauter les en-têtes, et quand a été introduit plus tard c'était seulement pour le OpenCSVSerDe , pas pour LazySimpleSerDe , ce que vous obtenez lorsque vous spécifiez ROW FORMAT DELIMITED FIELDS …. Je pense que c'est ce qui a créé une certaine confusion quant à savoir si cela fonctionne ou non dans les réponses à cette question.

0
Theo