Definieren von Tabellenaufnahmeformate in Hive

Die Java-Technologie, die Hive verwendet Datensätze zu verarbeiten und zu Spaltendatentypen in Hive Tabellen zugeordnet wird aufgerufen SerDe, das ist die Abkürzung für SerializerDeSerializer. Die Abbildung zeigt, wie SerDes Leveraged sind und es wird Ihnen helfen, zu verstehen, wie Hive hält von Satzformate Dateiformate trennen.

bild0.jpg

Das erste, was zu beachten ist, die EINGABEFORMAT Objekt. EINGABEFORMAT können Sie Ihre eigenen Java-Klasse angeben, sollten Sie Hive wollen aus einem anderen Dateiformat zu lesen. GESPEICHERT als Textdatei ist einfacher als das Schreiben Inputformat org.apache.hadoop.mapred.TextInputFormat - die gesamte Java-Paket Baum und Klassenname für die Datei-Eingabeformat Objekt Standardtext, mit anderen Worten.

Das gleiche gilt für die AUSGABEFORMAT Objekt. Anstatt das Schreiben des gesamten Java-Paket Baum und Klassennamen aus, die GESPEICHERT als Textdatei Aussage kümmert sich um alles für Sie.

Hive können Sie Ihre Datensatzformat von Ihrem Dateiformat zu trennen, so wie genau erreichen Sie das? Einfach, ersetzen Sie entweder GESPEICHERT als Textdatei mit so etwas wie STORED AS rcfile, oder Sie können Ihre eigene Java-Klasse und geben Sie die Eingabe und Ausgabe-Klassen erstellen, unter Verwendung von Inputformat packagepath.classname und OUTPUT packagepath.classname.

Schließlich bemerken, dass, wenn Hive Daten vom HDFS (oder lokalen Dateisystem) zu lesen, eine Java-Deserializer die Daten in eine Aufnahmeformate, die Tabellenspaltendatentypen zugeordnet werden. Dies würde den Datenfluß für eine HiveQL charakterisieren WÄHLEN Erklärung. Wenn Hive wird das Schreiben von Daten, akzeptiert eine Java-Serializer den Datensatz Hive verwendet und übersetzt es so, dass die AUSGABEFORMAT Klasse kann es auf die HDFS (oder lokalen Dateisystem) zu schreiben.

Dies würde den Datenfluß für eine HiveQL charakterisieren CREATE-TABLE-AS-SELECT Erklärung. so ist die EINGABEFORMAT, AUSGABEFORMAT und SerDe Objekte ermöglichen Hive den Tabellensatzformat aus der Tabelle Dateiformat zu trennen.

Hive bündelt eine Reihe von SerDes für Sie zur Auswahl, und Sie werden eine größere Anzahl von Drittherstellern verfügbar, wenn Sie online suchen. Sie können auch Ihre eigenen SerDes entwickeln, wenn Sie eine ungewöhnliche Datentyp haben, die Sie mit einem Hive Tabelle verwalten möchten. (Mögliche Beispiele sind Videodaten und E-Mail-Daten.)

In der folgenden Liste sind sowie ein Drittanbieter-Option einige der SerDes mit Hive versehen beschrieben, die Sie nützlich finden können.

  • LazySimpleSerDe: Der Standard SerDe, die mit dem verwendet wird TEXTDATEI Format- wäre es mit verwendet werden our_first_table aus der folgenden Auflistung.

    (EIN) $ $ HIVE_HOME / bin hive --service cli(B) hive> set hive.cli.print.current.db = Echt-(C) hive (Standard)> CREATE DATABASE ourfirstdatabase-OKTime genommen: 3,756 Sekunden(D) hive (default)> USE ourfirstdatabase-OKTime genommen: 0,039 Sekunden(E) hive (ourfirstdatabase)> CREATE TABLE our_first_table (> Vorname STRING> LastNameSTRING,> EmployeeId INT) -OKTime genommen: 0,043 secondshive (ourfirstdatabase)> quit-(F) $ Ls /home/biadmin/Hive/warehouse/ourfirstdatabase.dbour_first_table

    Es wäre auch verwendet werden mit data_types_table aus der folgenden Auflistung.

    $ ./hive --service Clihive> CREATE DATABASE data_types_db-OKTime genommen: 0.119 secondshive> USE data_types_db-OKTime genommen: 0,018 Sekunden(1)Hive> TABLE data_types_table CREATE ((2) > Our_tinyint TINYINT KOMMENTAR '1 Byte Integer unterzeichnet',(3) > Our_smallintSMALLINT KOMMENTAR '2-Byte-Ganzzahl mit Vorzeichen',(4) > Our_int INT KOMMENTAR "4 Byte Integer unterzeichnet ',(5) > Our_bigint BIGINTCOMMENT '8-Byte-Ganzzahl mit Vorzeichen',(6) > Our_float FLOAT KOMMENTAR 'Single precision floating point',(7) > Our_double DOUBLECOMMENT 'double precision floating point',(8) > Our_decimal DECIMAL KOMMENTAR "Precise dezimal Typ basiert(9) > Auf Java BigDecimal Objekt ',(10) > Our_timestamp TIMESTAMP KOMMENTAR 'YYYY-MM-DD HH: MM: SS.fffffffff "(11) > (9 Dezimalstelle Genauigkeit) ',(12) > Our_boolean BOOLEAN KOMMENTAR 'TRUE oder FALSE boolean Datentyp',(13) > STRINGCOMMENT 'Character String-Datentyp' our_string,(14) > Our_binary BINARYCOMMENT 'Datentyp für beliebige Speichern(15) > Anzahl von Bytes ',(16) > Our_array ARRAY Kommentar 'eine Sammlung von Feldern alle(17) > Den gleichen Datentyp indiziert BY(18) > Eine ganze Zahl ',(19) > Our_map MAP KOMMENTAR "Eine Sammlung von Schlüssel, Wert-Paare(20) > Wobei der Schlüssel ein Primitive ist(21) > Typ und der Wert kann sein(22) > Nichts. Die gewählte Daten(23) > Typen für die Schlüssel und Werte(24) > Muss die gleiche pro Karte 'bleiben,(25) > our_structSTRUCT(26) > Kommentar 'eine verschachtelte komplexe Daten(27) > Struktur ",(28) > Our_union UNIONTYPE(29) > KOMMENTAR "Typ A-Komplex Daten, die kann(30) > In einer seiner möglichen Daten halten(31) > Typen auf einmal ')(32) > KOMMENTAR 'Tabelle alle Apache Hive-Datentypen darstellt'(33) > ROW FORMAT DELIMITED(34) > FIELDS TERMINATED BY ','(35) > COLLECTION PUNKTE VON BEENDET '|'(36) > Mapkeys TERMINATED BY '^'(37) > LINES ' n' BEENDET(38) > GESPEICHERT als Textdatei(39) > TBLPROPERTIES ( 'Schöpfer' = 'Bruce Brown', 'created_at' = 'Sa 21. September 20.46.32 EDT 2013') - OKTime genommen: 0,886 Sekunden
  • ColumnarSerDe: Wird mit der rcfile Format.

  • RegexSerDe: Der reguläre Ausdruck SerDe, die Schiffe mit Hive das Parsen von Textdateien zu ermöglichen, für den Aufbau von strukturierten Daten in Hive Tabellen aus unstrukturierten Blogs, semi-strukturierte Log-Dateien, E-Mails, Tweets und andere Daten RegexSerDe kann zu einem leistungsstarken Ansatz bilden aus sozialen Medien. Reguläre Ausdrücke können Sie aussagekräftige Informationen (E-Mail-Adresse, zum Beispiel) mit HiveQL von einer unstrukturierten oder halbstrukturierten Textdokument nicht mit traditionellen SQL und RDBMS-Systeme zu extrahieren.

  • HBaseSerDe: Eingeschlossen mit Hive ermöglicht es mit HBase zu integrieren. Sie können speichern Hive Tabellen in HBase durch diese SerDe nutzen.

  • JSONSerDe: Ein Drittanbieter-SerDe zum Lesen und Schreiben von JSON Datensätze mit Hive. Sie können schnell zu finden (via Google und GitHub) zwei JSON SerDes von Online für die Phrase gesucht json serde für Bienenstock.

  • AvroSerDe: Eingeschlossen mit Hive, so dass Sie lesen können und Avro Daten in Hive Tabellen schreiben.

Überprüfung der Sprache Handbuch DDL kann sehr hilfreich sein, bevor Sie Ihre Tabellen beginnen zu schaffen.

Menü