2017-11-21 3 views
2

Ich bin ziemlich neu in der Produktion von Hadoop. Ich benutzte Scoop, um eine große Tabelle aus einer Datenbank in Hive einzubringen. Scoop erstellte eine durch Kommas getrennte Textdatei und erstellte die entsprechende Tabelle in Hive.Orc nicht schneller als CSV in Hive?

ich dann einen ausgeführt create table new_table_orc stored as orc as select * from old_table_csv

Da eine Textdatei wie etwa als ineffizient ist wie zu ORC (Binärdaten, spaltenweise Datenspeicher für Fetttabellen, Kompression, etc.) verglichen werden, erwartete ich eine große Verbesserungen der Größenordnung, aber die Ausführungszeit der Abfrage scheint sich überhaupt nicht geändert zu haben!

Ich verwendete die gleiche einfache Abfrage für beide Version (Text, ORC und sogar Parkett) und tat das gleiche dünn, wenn mehrere dieser Tabellen in einer Verknüpfung verwendet wurden.

Zusätzliche Informationen: Die Haupttabelle, die ich testen möchte, hat etwa 430 Millionen Zeilen und etwa 50 Spalten.

Ich bin mit ein paar Anfragen: select sum(col1) from my_table; < = 40 sec

select sum(col1) from my_table_orc; < = 31 sec

Und

select distinct col2 from my_table where col3 = someval; < = 53 sec

select distinct col2 from my_table_orc where col3 = someval; < = 35 Sek.

Ich habe auch die Vektorisierung aktiviert, wie @sahil desai vorgeschlagen hat, scheint aber einen großen Unterschied gemacht zu haben (es hat die Zeit um ein paar Sekunden verkürzt).

Was passiert hier, warum sehe ich keine Größenordnungen Beschleunigung? Was für Details benötigen Sie?

+0

Was zu verbessern Abfrage haben Sie laufen? ORC oder Parquet ist schneller, aber nicht für das Scannen der gesamten Tabelle –

+0

, wie große Daten Sie haben und was die Abfrage, die Sie ausführen, zählt. Wenn Sie kleine Datensätze testen, können Sie keinen Leistungsunterschied finden. –

+0

@sandeeprawat Weitere Informationen in der Beschreibung hinzugefügt. Die Daten sind nicht klein, obwohl ich immer noch aus der Perspektive einer einzelnen Maschine denke. – Shahbaz

Antwort

1

Nach meiner Erfahrung ist ORC schneller. Die Verwendung der ORC-Datei für jede HIVE-Tabelle sollte äußerst vorteilhaft sein, um schnelle Antwortzeiten für Ihre HIVE-Abfragen zu erhalten. Ich denke, Sie müssen die Vektorisierung aktivieren, Vectorized Abfrageausführung verbessert die Leistung von Operationen wie Scans, Aggregationen, Filter und Joins, indem sie sie in Stapeln von 1024 Zeilen gleichzeitig statt einzelne Zeile jedes Mal.

set hive.vectorized.execution.enabled = true;  
set hive.vectorized.execution.reduce.enabled = true; 

gibt es viele Möglichkeiten, die Struktur Leistung wie Tez Ausführung, Kosten Abfrage-Optimierung (CBO) usw.

+0

Ich habe Ihre Flags im JDBC-Client ohne Fehler ausgeführt. Die Performance scheint jedoch gleich geblieben zu sein. – Shahbaz

Verwandte Themen