it-swarm.com.de

Hadoop/Hive: Laden von Daten von .csv auf einem lokalen Computer

Da dies von einem Neuling kommt ...

Ich hatte Hadoop und Hive für mich eingerichtet, sodass ich auf meinem Computer Hive-Abfragen ausführen kann, um auf Daten im AWS-Cluster zuzugreifen .. Kann ich Hive-Abfragen mit auf meinem Computer gespeicherten CSV-Daten ausführen, wie ich es mit MS SQL Server getan habe? 

Wie lade ich dann .csv-Daten in Hive? Was hat es mit Hadoop zu tun und in welchem ​​Modus sollte ich diesen ausführen?

Um welche Einstellungen sollte ich mich kümmern, damit ich, wenn ich etwas falsch gemacht habe, immer wieder bei Amazon Abfragen ausführen kann, ohne die zuvor für mich eingerichteten Einstellungen zu beeinträchtigen?

28
mel

Lassen Sie mich die folgenden einfachen Schritte durcharbeiten:

Schritte:

Erstellen Sie zunächst eine Tabelle in Hive mit den Feldnamen in Ihrer CSV-Datei. Nehmen wir zum Beispiel an, Ihre CSV-Datei enthält drei Felder (ID, Name, Gehalt) und Sie möchten in Hive eine Tabelle mit dem Namen "staff" erstellen. Verwenden Sie den folgenden Code, um die Tabelle in Hive zu erstellen.

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

Zweitens, jetzt, da Ihre Tabelle in Hive erstellt wurde, lassen Sie uns die Daten in Ihrer CSV-Datei in die "staff" -Tabelle in Hive laden.

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

Zeigen Sie schließlich den Inhalt Ihrer "Staff" -Tabelle in Hive an, um zu überprüfen, ob die Daten erfolgreich geladen wurden

Hive> SELECT * FROM Staff;

Vielen Dank.

33
Adewole Kayode

wenn Sie ein Hive-Setup haben, können Sie das lokale Dataset mithilfe des Hive-Load-Befehls direkt in hdfs/s3 einfügen. 

Sie müssen das Schlüsselwort "Local" verwenden, wenn Sie den Ladebefehl schreiben.

Syntax für den Befehl hiveload

LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]

Weitere Informationen finden Sie unter dem Link . https://cwiki.Apache.org/confluence/display/Hive/LanguageManual%20DML#LanguageManualDML-Loadingfilesintotables

15
hjamali52

Es gibt einen anderen Weg, dies zu ermöglichen,

  1. verwenden Sie hadoop hdfs -copyFromLocal, um die CSV-Datendatei von Ihrem lokalen Computer an einen beliebigen Ort in HDFS zu kopieren. Sagen Sie '/ Pfad/Dateiname'.

  2. gehen Sie in die Hive-Konsole und führen Sie das folgende Skript aus, um die Datei als Hive-Tabelle zu laden. Beachten Sie, dass '\ 054' der ASCII-Code von 'Komma' in Oktalzahl ist, der das Trennzeichen für Felder darstellt.


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

Für das Formatieren von CSV-Dateien liegen die Daten im folgenden Format vor 

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

Und wenn wir ein Feld verwenden, das mit ',' abgeschlossen ist, erhält jede Spalte Werte wie unten. 

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

auch wenn einer der Spaltenwerte comma als Wert hat, funktioniert er überhaupt nicht.

Die korrekte Methode zum Erstellen einer Tabelle wäre also die Verwendung von 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

Sie können dies versuchen Nachfolgend einige Beispiele zur Erstellung von Dateien. Tool - https://sourceforge.net/projects/csvtohive/?source=directory

  1. Wählen Sie eine CSV-Datei mit Durchsuchen aus, und legen Sie das hadoop-Stammverzeichnis fest:/user/bigdataproject /

  2. Das Tool generiert ein Hadoop-Skript mit allen CSV-Dateien. Nachfolgend finden Sie ein Beispiel eines von Hadoop-Skript erzeugten

    #!/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. Beispiel für generierte Hive-Skripte

    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;

Vielen Dank. Vijay

4
Vijay Kumar

Sie können lokale CSV-Dateien nur dann in Hive laden, wenn

  1. Sie tun dies von einem der Hive-Cluster-Knoten aus. 
  2. Sie haben den Hive-Client auf einem Nicht-Cluster-Knoten installiert und verwenden zum Hochladen Hive oder beeline.
0
Alex B