web-dev-qa-db-fra.com

Hadoop/Hive: Chargement de données à partir de .csv sur une machine locale

Comme cela vient d'un débutant ...

J'avais Hadoop et Hive configurés pour pouvoir exécuter des requêtes Hive sur mon ordinateur en accédant aux données du cluster AWS ..__ Puis-je exécuter des requêtes Hive avec des données .csv stockées sur mon ordinateur, comme je l'ai fait avec MS SQL Server? 

Comment puis-je charger des données .csv dans Hive? Qu'est-ce que cela a à voir avec Hadoop et quel mode dois-je utiliser?

Quels paramètres dois-je prendre en compte pour que, si je fais quelque chose de mal, je puisse toujours revenir en arrière et exécuter des requêtes sur Amazon sans compromettre ce qui a été configuré pour moi auparavant?

28
mel

Laissez-moi vous expliquer les étapes simples suivantes:

Pas:

Commencez par créer une table sur Hive en utilisant les noms de champs de votre fichier csv. Disons par exemple que votre fichier csv contient trois champs (identifiant, nom, salaire) et que vous voulez créer une table dans Hive appelée "staff". Utilisez le code ci-dessous pour créer la table dans Hive.

Hive> CREATE TABLE Staff (id int, name string, salary double) row format delimited fields terminated by ',';

Deuxièmement, maintenant que votre table est créée dans Hive, chargez les données de votre fichier csv dans la table "personnel" de Hive.

Hive>  LOAD DATA LOCAL INPATH '/home/yourcsvfile.csv' OVERWRITE INTO TABLE Staff;

Enfin, affichez le contenu de votre table "Personnel" sur Hive pour vérifier si les données ont été chargées avec succès.

Hive> SELECT * FROM Staff;

Merci.

33
Adewole Kayode

Il y a une autre façon de permettre cela,

  1. utilisez hadoop hdfs -copyFromLocal pour copier le fichier de données .csv de votre ordinateur local vers un emplacement de HDFS, par exemple, '/ chemin/nom_fichier'

  2. entrez dans la console Hive, exécutez le script suivant pour charger à partir du fichier et le transformer en table Hive. Notez que '\ 054' est le code ascii de 'virgule' en nombre octal, représentant le délimiteur de champs.


CREATE EXTERNAL TABLE table name (foo INT, bar STRING)
 COMMENT 'from csv file'
 ROW FORMAT DELIMITED FIELDS TERMINATED BY '\054'
 STORED AS TEXTFILE
 LOCATION '/path/filename';
9
Lex Lian

Pour le fichier csv, les données de formatage seront au format ci-dessous 

"column1", "column2","column3","column4"

Et si nous utilisons un champ terminé par ',', chaque colonne recevra les valeurs indiquées ci-dessous. 

"column1"    "column2"     "column3"     "column4"

de même, si l'une des valeurs de la colonne a la valeur comma, elle ne fonctionnera pas du tout.

Donc, la bonne façon de créer une table serait d’utiliser OpenCSVSerde

create table tableName (column1 datatype, column2 datatype , column3 datatype , column4 datatype)
ROW FORMAT SERDE 
'org.Apache.hadoop.Hive.serde2.OpenCSVSerde' 
STORED AS TEXTFILE ;
4
Arpan

Vous pouvez essayer ceci, Voici quelques exemples sur la façon dont les fichiers sont générés. Outil - https://sourceforge.net/projects/csvtohive/?source=directory

  1. Sélectionnez un fichier CSV en utilisant Parcourir et définissez le répertoire racine hadoop ex:/user/bigdataproject /.

  2. Outil Génère un script Hadoop avec tous les fichiers csv. Voici un exemple de script Hadoop généré par Pour insérer un fichier csv dans Hadoop

    #!/bin/bash -v
    hadoop fs -put ./AllstarFull.csv /user/bigdataproject/AllstarFull.csv Hive -f ./AllstarFull.Hive

    hadoop fs -put ./Appearances.csv /user/bigdataproject/Appearances.csv Hive -f ./Appearances.Hive

    hadoop fs -put ./AwardsManagers.csv /user/bigdataproject/AwardsManagers.csv Hive -f ./AwardsManagers.Hive

  3. Exemple de scripts Hive générés

    CREATE DATABASE IF NOT EXISTS lahman;
    USE lahman;
    CREATE TABLE AllstarFull (playerID string,yearID string,gameNum string,gameID string,teamID string,lgID string,GP string,startingPos string) row format delimited fields terminated by ',' stored as textfile;
    LOAD DATA INPATH '/user/bigdataproject/AllstarFull.csv' OVERWRITE INTO TABLE AllstarFull;
    SELECT * FROM AllstarFull;

Merci Vijay

4
Vijay Kumar

Vous pouvez charger un fichier CSV local dans Hive uniquement si:

  1. Vous le faites depuis l'un des nœuds du cluster Hive. 
  2. Vous avez installé le client Hive sur un nœud non-cluster et en utilisant Hive ou beeline pour le téléchargement.
0
Alex B