Heim  >  Artikel  >  Backend-Entwicklung  >  Fünf Dinge, die Sie lernen müssen, um Fallstricke beim Einstieg in HIVE-Partitionen zu vermeiden

Fünf Dinge, die Sie lernen müssen, um Fallstricke beim Einstieg in HIVE-Partitionen zu vermeiden

坏嘻嘻
坏嘻嘻Original
2018-09-15 11:11:101734Durchsuche

Dieser Artikel vermittelt Ihnen die fünf wichtigsten Kenntnisse, die Sie lernen müssen, um Fallstricke zu vermeiden, wenn Sie mit der HIVE-Partitionierung beginnen. Ich hoffe, dass er für Sie hilfreich ist.

Hive – Erste Schritte mit der Partitionierung [Datei] wird in Kategorien gespeichert und kann nur auf [Datei] verfeinert werden, der Inhalt kann jedoch nicht verfeinert werden. Es kann jedoch nur eine Klasse (Bereich) in einer angegeben werden Operation;

2: Eine Operation der dynamischen Partition kann nach dem spezifischen Inhalt des Feldes (Bereich) unterteilt werden;

3: Der Zweck der Partitionierung besteht darin, den Abfragebereich einzugrenzen und die Abfrage zu verbessern Effizienz einer einzelnen Tabelle beim Abfragen einer einzelnen Tabelle

4: Da die Partition für die statische Partitionierung in der Befehlszeile angegeben wird, wird das MR-Programm unten nicht ausgeführt (Relativ starre dynamische Partition führt das MR-Programm aus und extrahiert). die entsprechenden Felder (relativ intelligent)

Demoschritte:
1. Erstellen Sie eine Schülerpartitionstabelle

95001, Li Yong ,Male,20,CS
95002, Liu Chen, weiblich, 19, IS

95003, Wang Min, weiblich, 22, MA

95004, Zhang Li, männlich, 19, IS

95005, Liu Gang, männlich, 18, MA

95006, Sun Qing, männlich, 23, CS

--分区表创建create table t_students(id int,name string,sex string)
partitioned by (age int,class string)row format delimited fields terminated by ',' ;

Erstellen und prüfen, ob es erfolgreich ist

hive> set hive.cli.print.header=true;hive> select * from t_students;OK
t_students.id   t_students.name t_students.sex  t_students.age  t_students.class

2. Inhalt hinzufügen
(1) laden
--静态分区load data local inpath '/root/logs/students.txt' into table t_students partition (age=19,class='MA');

( 2)Einfügen

In Hive einfügen wird hauptsächlich in Verbindung mit ausgewählten Abfrageanweisungen verwendet. Nachdem

--动态分区set hive.exec.dynamic.partition=true;set hive.exec.dynamic.partition.mode=nonstrict;insert overwrite table t_students  partition (age,class) 
select * from t_student;

ausgeführt wurde, können Sie die Metadaten-SDS-Tabelle anzeigen und alle Zuordnungsinformationen sehen


--使用同样的数据,再次追加insert一次数据
hive> insert into table t_students  partition (age,class) select * from t_student;

Nach dem erneuten Anhängen der Daten bleiben die Metadaten-SDS-Tabelleninformationen unverändert und die Dateien unter jedem Partitionspfad werden zu zwei Kopien


Hive-Bucketing Fünf Dinge, die Sie lernen müssen, um Fallstricke beim Einstieg in HIVE-Partitionen zu vermeiden

Bucketing ist eine feinere Aufteilung der relativen Partitionen. Beim Bucketing wird der gesamte Dateninhalt basierend auf dem Hashwert eines bestimmten Spaltenattributs in Buckets unterteilt. Um das Namensattribut in drei Buckets zu unterteilen, wird der Hashwert des Namensattributwerts um 3 moduliert und die Daten entsprechend in Buckets unterteilt das Modulo-Ergebnis. Beispielsweise werden die Datensätze mit einem Modulo-Ergebnis von 0 in einer Datei gespeichert, die Daten mit einem Modulo-Ergebnis von 1 werden in einer Datei gespeichert und die Daten mit einem Modulo-Ergebnis von 2 werden in einer Datei gespeichert.

Hinweis:
Führen Sie zunächst den Befehl hive.enforce.bucketiong=true vor dem Bucketing aus. Fünf Dinge, die Sie lernen müssen, um Fallstricke beim Einstieg in HIVE-Partitionen zu vermeidenZweitens verwenden Sie das Schlüsselwort „clustered by“, um den Spaltennamen anzugeben, auf dem die Partition basiert, und geben Sie auch an, wie viele Der hier angegebene Bucket ist in 3 Buckets unterteilt.

Drittens basiert die Partitionierung im Gegensatz zur Partitionierung nicht auf den Spalten in der realen Datentabellendatei, sondern auf den von uns angegebenen Pseudospalten. Das Bucketing basiert jedoch auf den realen Spalten in der Datentabelle und nicht auf Pseudospalten. Daher müssen Sie bei der Angabe der Spalte, auf der die Partitionierung basiert, den Spaltentyp angeben, da diese Spalte in der Datentabellendatei nicht vorhanden ist, was dem Erstellen einer neuen Spalte entspricht. Das Bucketing basiert auf einer Spalte, die bereits in der Tabelle vorhanden ist. Der Datentyp dieser Spalte ist offensichtlich bekannt, sodass keine Angabe des Spaltentyps erforderlich ist.

Das obige ist der detaillierte Inhalt vonFünf Dinge, die Sie lernen müssen, um Fallstricke beim Einstieg in HIVE-Partitionen zu vermeiden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn