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?
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
vous pouvez maintenant ignorer le nombre d'en-têtes dans Hive 0.13.0.
tblproperties ("skip.header.line.count"="1");
</ code>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.
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