hive - snippet - title tag definition




Wie können wir die Gesamtanzahl entscheiden? von Eimern für einen Bienenstock Tisch (2)

Aus dem Dokumentationslink

Im Allgemeinen wird die Bucket-Nummer durch den Ausdruck hash_function (bucketting_column) mod num_buckets bestimmt. (Da ist auch ein '0x7FFFFFFF drin, aber das ist nicht so wichtig). Die Funktion hash_function hängt vom Typ der Bucketing-Spalte ab. Für einen int ist es einfach, hash_int (i) == i. Wenn zum Beispiel user_id ein int und 10 Buckets wären, würden wir erwarten, dass alle User_IDs, die auf 0 enden, in Bucket 1 sind, alle User_IDs, die in 1 enden, in Bucket 2 usw. Für andere Datentypen ein wenig schwierig. Insbesondere ist der Hash eines BIGINT nicht der gleiche wie der BIGINT. Und der Hash einer Zeichenkette oder eines komplexen Datentyps ist eine Zahl, die von dem Wert abgeleitet ist, aber nichts, was für Menschen erkennbar ist. Wenn beispielsweise user_id ein STRING wäre, würden die User_IDs in Bucket 1 wahrscheinlich nicht in 0 enden. Im Allgemeinen wird das Verteilen von Zeilen basierend auf dem Hash eine gleichmäßige Verteilung in den Buckets ermöglichen.

Ich bin etwas neu zu hadoop. Nach meinem Wissen sind Buckets nicht behoben. der Partitionen in Hive Table und Hive verwendet die Nr. von Reduzierern wie die Gesamtanzahl der Buckets, die beim Erstellen der Tabelle definiert wurden. Kann mir jemand sagen, wie man die Gesamtanzahl berechnet? von Eimern in einem Bienenstock Tisch. Gibt es eine Formel für die Berechnung der Gesamtzahl der Eimer?


Wenn Sie wissen möchten, wie viele Buckets Sie in Ihrer CLUSTER BY Klausel auswählen sollten, sollten Sie eine Zahl auswählen, die zu Buckets führt, die der HDFS-Blockgröße entsprechen oder knapp darunter liegen.

Dies sollte helfen, zu vermeiden, dass HDFS Speicher zu Dateien zuweist, die meistens leer sind.

Wählen Sie auch eine Zahl mit einer Zweierpotenz.

Sie können Ihre HDFS Blockgröße überprüfen mit :

hdfs getconf -confKey dfs.blocksize