Wie man den Fehler 'Nicht unterstützter Datentyp' beim Erstellen einer Hive-Tabelle behebt

HadoopHadoopBeginner
Jetzt üben

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

Einführung

In diesem Tutorial führen wir Sie durch den Prozess der Behebung des Fehlers "Nicht unterstützter Datentyp" beim Erstellen von Hive-Tabellen im Hadoop-Ekosystem. Wir geben einen Überblick über die Hive-Datentypen, helfen Ihnen, nicht unterstützte Datentypen zu identifizieren, und bieten Lösungen, um eine erfolgreiche Tabellenerstellung sicherzustellen.


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") subgraph Lab Skills hadoop/hive_setup -.-> lab-417899{{"Wie man den Fehler 'Nicht unterstützter Datentyp' beim Erstellen einer Hive-Tabelle behebt"}} hadoop/hive_shell -.-> lab-417899{{"Wie man den Fehler 'Nicht unterstützter Datentyp' beim Erstellen einer Hive-Tabelle behebt"}} end

Überblick über die Hive-Datentypen

Hive ist eine Datenwarehouse-Infrastruktur, die auf Hadoop aufbaut, und es unterstützt eine Vielzahl von Datentypen zum Speichern und Verarbeiten von Daten. Das Verständnis der verfügbaren Datentypen in Hive ist von entscheidender Bedeutung beim Erstellen von Tabellen und der Datenverwaltung.

Grunddatentypen

Hive unterstützt die folgenden Grunddatentypen:

Datentyp Beschreibung
TINYINT 1-Byte vorzeichenbehaftete Ganzzahl
SMALLINT 2-Byte vorzeichenbehaftete Ganzzahl
INT 4-Byte vorzeichenbehaftete Ganzzahl
BIGINT 8-Byte vorzeichenbehaftete Ganzzahl
FLOAT 4-Byte einfache Genauigkeit Gleitkommazahl
DOUBLE 8-Byte doppelter Genauigkeit Gleitkommazahl
DECIMAL Beliebige Genauigkeit Dezimalzahl
BOOLEAN Boolescher Wert (true oder false)
STRING Unicode-Zeichenfolge
TIMESTAMP Datum und Uhrzeit mit Millisekunden-Genauigkeit
BINARY Bytefolge

Komplexe Datentypen

Hive unterstützt auch die folgenden komplexen Datentypen:

  • ARRAY: Geordnete Sammlung von Elementen vom gleichen Datentyp
  • MAP: Sammlung von Schlüssel-Wert-Paaren, wobei die Schlüssel eindeutig sind und die Werte doppelt vorkommen können
  • STRUCT: Sammlung von benannten Feldern, wobei jedes Feld einen unterschiedlichen Datentyp haben kann

Diese komplexen Datentypen können geschachtelt werden, um komplexere Datenstrukturen zu erstellen.

graph TD A[Hive-Datentypen] A --> B[Grunddatentypen] A --> C[Komplexe Datentypen] B --> D[TINYINT, SMALLINT, INT, BIGINT] B --> E[FLOAT, DOUBLE, DECIMAL] B --> F[BOOLEAN, STRING, TIMESTAMP, BINARY] C --> G[ARRAY] C --> H[MAP] C --> I[STRUCT]

Identifizierung von nicht unterstützten Datentypen

Beim Erstellen von Hive-Tabellen ist es wichtig, sicherzustellen, dass die verwendeten Datentypen vom Hive-Datentypensystem unterstützt werden. Das Versuchen, nicht unterstützte Datentypen zu verwenden, kann zu einem Fehler "Nicht unterstützter Datentyp" führen.

Überprüfen der unterstützten Datentypen

Sie können die Liste der unterstützten Datentypen in Hive überprüfen, indem Sie den folgenden Befehl im Hive-CLI ausführen:

SHOW TBLPROPERTIES("'hive.support.sql11.reserved.keywords'");

Dies wird die Liste der unterstützten Datentypen anzeigen, die mit denen übereinstimmen sollten, die im Abschnitt "Überblick über die Hive-Datentypen" erwähnt werden.

Identifizierung von nicht unterstützten Datentypen

Wenn Sie versuchen, eine Hive-Tabelle mit einem nicht unterstützten Datentyp zu erstellen, werden Sie den Fehler "Nicht unterstützter Datentyp" erhalten. Beispielsweise versuchen wir, eine Tabelle mit einem DATE-Datentyp zu erstellen, der von Hive nicht nativ unterstützt wird:

CREATE TABLE unsupported_table (
  id INT,
  date_column DATE
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ',';

Dies führt zu dem folgenden Fehler:

FAILED: SemanticException [Error 10125]: Unsupported data type: date

Die Fehlermeldung zeigt deutlich an, dass der DATE-Datentyp von Hive nicht unterstützt wird.

Um derartige Fehler zu vermeiden, ist es von entscheidender Bedeutung, sich mit der Liste der unterstützten Datentypen in Hive vertraut zu machen und nur diese Datentypen beim Erstellen von Tabellen zu verwenden.

Behebung von Fehlern "Nicht unterstützter Datentyp"

Wenn Sie beim Erstellen einer Hive-Tabelle den Fehler "Nicht unterstützter Datentyp" erhalten, gibt es einige Schritte, die Sie unternehmen können, um das Problem zu beheben.

Verwenden von unterstützten Datentypen

Die erste und einfachste Lösung besteht darin, nur die Datentypen zu verwenden, die von Hive unterstützt werden. Verweisen Sie auf den Abschnitt "Überblick über die Hive-Datentypen", um sicherzustellen, dass Sie die richtigen Datentypen für Ihre Tabelle verwenden.

Beispielsweise können Sie den TIMESTAMP-Datentyp verwenden, um Datumsinformationen zu speichern, anstatt des nicht unterstützten DATE-Datentyps:

CREATE TABLE supported_table (
  id INT,
  date_column TIMESTAMP
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ',';

Verwenden von Typkonversionsfunktionen

Wenn Sie einen Datentyp verwenden müssen, der von Hive nicht nativ unterstützt wird, können Sie versuchen, ihn in einen unterstützten Datentyp zu konvertieren, indem Sie Typkonversionsfunktionen verwenden.

Wenn Sie beispielsweise eine DATE-Spalte in Ihren Quelldaten haben, können Sie sie in Hive in einen STRING- oder TIMESTAMP-Datentyp konvertieren:

CREATE TABLE converted_table (
  id INT,
  date_column STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ',';

-- Alternativ können Sie auch TIMESTAMP verwenden
CREATE TABLE converted_table (
  id INT,
  date_column TIMESTAMP
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ',';

Verwenden eines benutzerdefinierten SerDe (Serializer/Deserializer)

Wenn die obigen Lösungen für Ihren speziellen Anwendungsfall nicht funktionieren, können Sie erwägen, einen benutzerdefinierten SerDe (Serializer/Deserializer) zu verwenden, um den nicht unterstützten Datentyp zu verarbeiten. Dieser Ansatz besteht darin, eine benutzerdefinierte Java-Klasse zu schreiben, die den nicht unterstützten Datentyp lesen und schreiben kann.

Der Prozess der Implementierung eines benutzerdefinierten SerDe ist komplexer und liegt außerhalb des Rahmens dieses Tutorials. Wenn Sie jedoch eine spezifische Anforderung haben, die mit den in Hive integrierten Datentypen nicht erfüllt werden kann, kann dies eine durchführbare Option sein, die zu erkunden ist.

Indem Sie diese Schritte befolgen, können Sie den Fehler "Nicht unterstützter Datentyp" effektiv beheben, wenn Sie Hive-Tabellen erstellen, und sicherstellen, dass Ihre Daten richtig gespeichert und verarbeitet werden.

Zusammenfassung

Indem Sie die in diesem auf Hadoop konzentrierten Tutorial beschriebenen Schritte befolgen, sollten Sie in der Lage sein, Hive-Tabellen erfolgreich zu erstellen und den Fehler "Nicht unterstützter Datentyp" zu vermeiden. Dieses Wissen wird Ihre Hadoop-Programmierfähigkeiten verbessern und es Ihnen ermöglichen, in Ihren auf Hadoop basierenden Projekten effektiver mit der Hive-Datenverwaltung umzugehen.