Wie man eine Hive-Tabelle erstellt und Daten aus einer CSV-Datei lädt

HadoopHadoopBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In der Welt der Big Data ist Apache Hive zu einem unverzichtbaren Werkzeug für die Datenverarbeitung und -analyse im Hadoop-Ökosystem geworden. Dieser Leitfaden führt Sie durch den Prozess der Erstellung einer Hive-Tabelle und des Importierens von Daten aus einer CSV-Datei, sodass Sie Ihre auf Hadoop basierenden Daten effektiv verwalten und nutzen können.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hadoop(("Hadoop")) -.-> hadoop/HadoopHiveGroup(["Hadoop Hive"]) hadoop/HadoopHiveGroup -.-> hadoop/hive_setup("Hive Setup") hadoop/HadoopHiveGroup -.-> hadoop/hive_shell("Hive Shell") hadoop/HadoopHiveGroup -.-> hadoop/manage_db("Managing Database") hadoop/HadoopHiveGroup -.-> hadoop/create_tables("Creating Tables") hadoop/HadoopHiveGroup -.-> hadoop/load_insert_data("Loading and Inserting Data") subgraph Lab Skills hadoop/hive_setup -.-> lab-415637{{"Wie man eine Hive-Tabelle erstellt und Daten aus einer CSV-Datei lädt"}} hadoop/hive_shell -.-> lab-415637{{"Wie man eine Hive-Tabelle erstellt und Daten aus einer CSV-Datei lädt"}} hadoop/manage_db -.-> lab-415637{{"Wie man eine Hive-Tabelle erstellt und Daten aus einer CSV-Datei lädt"}} hadoop/create_tables -.-> lab-415637{{"Wie man eine Hive-Tabelle erstellt und Daten aus einer CSV-Datei lädt"}} hadoop/load_insert_data -.-> lab-415637{{"Wie man eine Hive-Tabelle erstellt und Daten aus einer CSV-Datei lädt"}} end

Einführung in Apache Hive

Apache Hive ist eine Data-Warehouse-Software, die auf Apache Hadoop aufbaut und zur Datenzusammenfassung, -abfrage und -analyse dient. Es wurde ursprünglich von Facebook entwickelt und später an die Apache Software Foundation gespendet.

Hive bietet eine SQL-ähnliche Schnittstelle namens HiveQL zur Abfrage und Verwaltung großer Datensätze, die im verteilten Dateisystem von Hadoop (Hadoop Distributed File System, HDFS) oder anderen kompatiblen Speichersystemen wie Amazon S3 gespeichert sind. Es übersetzt die SQL-ähnlichen Abfragen in MapReduce, Spark oder andere Ausführungs-Engines zur Datenverarbeitung.

Einige wichtige Merkmale von Apache Hive sind:

Datenabstraktion

Hive bietet eine Möglichkeit, die in Hadoop gespeicherten Daten in Tabellen zu strukturieren, ähnlich wie in einer herkömmlichen Datenbank. Dadurch können Benutzer die Daten mit einer SQL-ähnlichen Sprache (HiveQL) abfragen, ohne die zugrunde liegende Speicherform oder den Speicherort der Daten kennen zu müssen.

Skalierbarkeit

Hive ist so konzipiert, dass es große Datenmengen verarbeiten kann, indem es die Skalierbarkeit des Hadoop-Ökosystems nutzt. Es kann effizient Terabyte oder sogar Petabyte an Daten verarbeiten.

Integration in das Hadoop-Ökosystem

Hive ist eng in das Hadoop-Ökosystem integriert, sodass es die verteilte Verarbeitungsleistung und die Speicherfähigkeiten von Hadoop nutzen kann.

Benutzerdefinierte Funktionen (User-Defined Functions, UDFs)

Hive unterstützt die Erstellung benutzerdefinierter Funktionen, sogenannter Benutzerdefinierter Funktionen (User-Defined Functions, UDFs), die zur Erweiterung der Funktionalität von HiveQL verwendet werden können.

Partitionierung und Bucketing

Hive bietet Funktionen wie Partitionierung und Bucketing, um die Abfrageleistung zu optimieren, indem die Daten auf effizientere Weise organisiert werden.

Durch das Verständnis der grundlegenden Konzepte und Merkmale von Apache Hive sind Sie besser in der Lage, Hive-Tabellen zu erstellen und zu verwalten sowie Daten aus verschiedenen Quellen, einschließlich CSV-Dateien, zu laden.

Erstellen einer Hive-Tabelle

Um eine neue Hive-Tabelle zu erstellen, können Sie die CREATE TABLE-Anweisung in HiveQL verwenden. Hier ist ein Beispiel:

CREATE TABLE IF NOT EXISTS sales (
  product_id INT,
  product_name STRING,
  price FLOAT,
  quantity INT
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE
LOCATION '/user/hive/warehouse/sales';

Lassen Sie uns die verschiedenen Teile dieser Anweisung analysieren:

Tabellendefinition

  • CREATE TABLE IF NOT EXISTS sales: Dies erstellt eine neue Tabelle mit dem Namen "sales", wenn sie noch nicht existiert.
  • (product_id INT, product_name STRING, price FLOAT, quantity INT): Dies definiert das Tabellenschema, einschließlich der Spaltennamen und Datentypen.

Zeilenformat

  • ROW FORMAT DELIMITED: Dies gibt an, dass die Daten durch ein bestimmtes Zeichen getrennt sind.
  • FIELDS TERMINATED BY ',': Dies setzt das Feld- (Spalten-)Trennzeichen auf ein Komma.

Speicherformat

  • STORED AS TEXTFILE: Dies teilt Hive mit, die Daten im Text-Dateiformat zu speichern.
  • LOCATION '/user/hive/warehouse/sales': Dies gibt den Speicherort der Tabellendaten im HDFS (oder einem anderen kompatiblen Speichersystem) an.

Sie können auch partitionierte Tabellen in Hive erstellen, was die Abfrageleistung verbessern kann, indem die Daten basierend auf einer oder mehreren Spalten organisiert werden. Hier ist ein Beispiel:

CREATE TABLE IF NOT EXISTS sales_partitioned (
  product_id INT,
  product_name STRING,
  price FLOAT,
  quantity INT
)
PARTITIONED BY (year INT, month INT)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE
LOCATION '/user/hive/warehouse/sales_partitioned';

In diesem Beispiel ist die Tabelle "sales_partitioned" nach den Spalten "year" und "month" partitioniert, sodass Sie die Daten effizienter abfragen können, indem Sie nach diesen Partitionen filtern.

Importieren von Daten aus einer CSV-Datei

Um Daten aus einer CSV-Datei in eine Hive-Tabelle zu importieren, können Sie die LOAD DATA-Anweisung verwenden. Hier ist ein Beispiel:

LOAD DATA INPATH '/path/to/sales.csv'
OVERWRITE INTO TABLE sales;

In diesem Beispiel wird die LOAD DATA-Anweisung verwendet, um Daten aus der Datei /path/to/sales.csv in die Tabelle sales zu laden. Die Option OVERWRITE ersetzt alle vorhandenen Daten in der Tabelle.

Sie können auch Daten aus einer CSV-Datei in eine partitionierte Hive-Tabelle laden. Hier ist ein Beispiel:

LOAD DATA INPATH '/path/to/sales_partitioned.csv'
OVERWRITE INTO TABLE sales_partitioned
PARTITION (year=2022, month=1);

In diesem Fall werden die Daten aus der Datei /path/to/sales_partitioned.csv in die Tabelle sales_partitioned geladen, wobei die Partition year auf 2022 und die Partition month auf 1 gesetzt wird.

Hier sind einige Dinge, die Sie beim Laden von Daten aus einer CSV-Datei in eine Hive-Tabelle berücksichtigen sollten:

Dateiformat

Stellen Sie sicher, dass das Format der CSV-Datei mit der Tabellendefinition übereinstimmt, einschließlich des Feldtrennzeichens, der Kopfzeile (falls vorhanden) und der Datentypen.

Datentypen

Hive leitet die Datentypen automatisch anhand der ersten paar Zeilen der CSV-Datei ab. Stellen Sie sicher, dass die abgeleiteten Datentypen mit Ihrer Tabellendefinition übereinstimmen.

Partitionierung

Wenn Sie partitionierte Tabellen verwenden, stellen Sie sicher, dass die Partitionierungsspalten in der PARTITION-Klausel der LOAD DATA-Anweisung korrekt angegeben sind.

Leistung

Für große Datensätze können Sie die Leistung verbessern, indem Sie den Befehl MSCK REPAIR TABLE verwenden, um die Partitionierungsmetadaten nach dem Laden der Daten zu aktualisieren.

MSCK REPAIR TABLE sales_partitioned;

Dieser Befehl scannt das HDFS-Verzeichnis und aktualisiert die Partitionierungsinformationen im Hive-Metastore.

Indem Sie diese Leitlinien befolgen, können Sie Daten effizient aus einer CSV-Datei in eine Hive-Tabelle importieren und die Datenabstraktions- und Skalierbarkeitsfunktionen von Hive nutzen.

Zusammenfassung

Indem Sie diesem auf Hadoop ausgerichteten Leitfaden folgen, werden Sie lernen, wie Sie eine Hive-Tabelle erstellen und Daten aus einer CSV-Datei laden. Mit diesem Wissen können Sie Ihre Daten effizient im Hadoop-Framework organisieren und darauf zugreifen, wodurch Sie das volle Potenzial Ihrer Big-Data-Initiativen ausschöpfen können.