web-dev-qa-db-fra.com

Hive External table-CSV File- Ligne d'en-tête

Ci-dessous, la table Hive que j'ai créée:

CREATE EXTERNAL TABLE Activity (
  column1 type, </br>
  column2 type
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION '/exttable/';

Dans mon emplacement HDFS/exttable, j'ai beaucoup de fichiers CSV et chaque fichier CSV contient également la ligne d'en-tête. Lorsque je fais des requêtes de sélection, le résultat contient également la ligne d'en-tête.

Y at-il un moyen dans Hive où nous pouvons ignorer la ligne d’en-tête ou la première ligne?

14
Ramana

Si vous utilisez Hive version 0.13.0 ou ultérieure, vous pouvez spécifier "skip.header.line.count" = "1" dans les propriétés de votre table pour supprimer l'en-tête. 

Pour des informations détaillées sur le correctif, voir: https://issues.Apache.org/jira/browse/Hive-5795

22
Varun Gupta

vous pouvez maintenant ignorer le nombre d'en-têtes dans Hive 0.13.0. 

tblproperties ("skip.header.line.count"="1");
</ code>

19
tariqz

Il n'y a pas. Cependant, vous pouvez prétraiter vos fichiers pour ignorer la première ligne avant de les charger dans HDFS - 

tail -n +2 withfirstrow.csv > withoutfirstrow.csv

Vous pouvez également l'intégrer dans la clause where de Hive pour ignorer la première ligne.

4
kgu87

Si votre version de Hive ne prend pas en charge tblproperties ("skip.header.line.count" = "1"), vous pouvez utiliser la commande unix ci-dessous pour ignorer la première ligne (en-tête de colonne), puis l'insérer dans HDFS.

 sed -n '2,$p' File_with_header.csv > File_with_No_header.csv
0
sras