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?
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.
Il y a une autre façon de permettre cela,
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'
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';
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 ;
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
Sélectionnez un fichier CSV en utilisant Parcourir et définissez le répertoire racine hadoop ex:/user/bigdataproject /.
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
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
Vous pouvez charger un fichier CSV local dans Hive uniquement si:
Hive
ou beeline
pour le téléchargement.