Abilitare la compressione Snappy per migliorare le prestazioni in Big SQL e Hive – Hadoop Dev

Big SQL supporta diversi formati di file. Leggi questo documento per maggiori informazioni sui diversi formati di file supportati da Big SQL. La distinzione di quale tipo di formato di file deve essere usato viene fatta durante la creazione della tabella. Big SQL supporta la creazione e il popolamento delle tabelle sia da Big SQL che da Hive. Uno dei maggiori vantaggi di Big SQL è che Big SQL si sincronizza con Hive Metastore. Questo significa che le tabelle Big SQL possono essere create e popolate in Big SQL o create in Big SQL e popolate da Hive. Le tabelle Hive possono anche essere popolate da Hive e poi accedere da Big SQL dopo che i cataloghi sono sincronizzati.

Quando si caricano i dati nelle tabelle Parquet Big SQL userà la compressione SNAPPY per default. Per Hive, di default la compressione non è abilitata, di conseguenza la tabella potrebbe essere significativamente più grande se creata e/o popolata in Hive. Le prossime sezioni descriveranno come abilitare la compressione SNAPPY per le tabelle popolate in Hive su IBM Open Platform (prima di Big SQL v5) e HortonWorks Data Platform (da Big SQL v5 in poi).

Creazione di una tabella Big SQL usando il formato Parquet

Quando le tabelle vengono create in Big SQL, il formato Parquet può essere scelto usando la clausola STORED AS PARQUET nell’istruzione CREATE HADOOP TABLE come in questo esempio:

 jsqsh>CREATE HADOOP TABLE inventory ( trans_id int, product varchar(50), trans_dt date ) PARTITIONED BY ( year int) STORED AS PARQUET 

Di default Big SQL usa la compressione SNAPPY quando scrive in tabelle Parquet. Questo significa che se i dati vengono caricati in Big SQL usando i comandi LOAD HADOOP o INSERT…SELECT, allora la compressione SNAPPY è abilitata per default.

Creazione di tabelle Hive usando il formato Parquet

Se le tabelle Parquet vengono create usando Hive, allora il default è di non abilitare alcuna compressione. Il seguente esempio mostra la sintassi per una tabella Parquet creata in Hive:

 hive> CREATE TABLE inv_hive ( trans_id int, product varchar(50), trans_dt date ) PARTITIONED BY ( year int) STORED AS PARQUET 

Nota che la sintassi è la stessa ma il comportamento è diverso. Per impostazione predefinita, Hive non utilizza alcuna compressione quando scrive nelle tabelle Parquet.

Confronto tra le dimensioni delle tabelle Big SQL e Hive Parquet

La seguente tabella mostra le dimensioni di una tabella utilizzando il formato di file Parquet quando la tabella viene popolata utilizzando Big SQL LOAD HADOOP e Big SQL INSERT…SELECT vs Hive INSERT…SELECT:

Big SQL LOAD Big SQL INSERT..SELECT Hive INSERT..SELECT
164 GB 165 GB 280 GB

Siccome i file Parquet creati con Big SQL sono compressi la dimensione complessiva della tabella è molto più piccola. La tabella creata e popolata in Big SQL è quasi la metà della tabella creata in Big SQL e poi popolata da Hive.

Abilitare la compressione SNAPPY in Hive

A partire da Hive 0.13, la proprietà della tabella ‘PARQUET.COMPRESS’=’SNAPPY’ può essere impostata per abilitare la compressione SNAPPY. In alternativa puoi impostare parquet.compression=SNAPPY nella sezione “Impostazioni personalizzate del sito di alveare” in Ambari sia per IOP che per HDP, il che assicurerà che Hive comprima sempre qualsiasi file Parquet che produce. Ecco un esempio di utilizzo della proprietà table durante una dichiarazione di creazione di una tabella in Hive:

 hive> CREATE TABLE inv_hive_parquet( trans_id int, product varchar(50), trans_dt date ) PARTITIONED BY ( year int) STORED AS PARQUET TBLPROPERTIES ('PARQUET.COMPRESS'='SNAPPY'); 

Nota che se la tabella viene creata in Big SQL e poi popolata in Hive, allora questa proprietà table può anche essere utilizzata per abilitare la compressione SNAPPY. Per esempio questa è la sintassi per creare una tabella Big SQL con la compressione SNAPPY abilitata. Questo può essere utile se le istruzioni INSERT…SELECT devono essere guidate da Hive.

 jsqsh> CREATE HADOOP TABLE inv_bigsql_parquet( trans_id int, product varchar(50), trans_dt date ) PARTITIONED BY ( year int) STORED AS PARQUET TBLPROPERTIES ('PARQUET.COMPRESS'='SNAPPY'); 

Con la compressione snappy abilitata in Hive abbiamo osservato le seguenti dimensioni della tabella:

Big SQL LOAD Big SQL INSERT..SELECT Hive INSERT..SELECT
164 GB 165 GB 163 GB

Con questa tabella di proprietà scesa da 280GB a 163GB, questa è una compressione approssimativa di quasi due volte. Non solo la tabella occuperà meno spazio su HDFS, ma ci può essere anche un significativo guadagno di prestazioni quando si accede ai dati per Big SQL o Hive. La raccomandazione è di impostare ‘parquet.compress=SNAPPY’ nelle TBLPROPERTIES quando si crea una tabella Parquet o impostare ‘parquet.compression.SNAPPY’ in hive-site attraverso Ambari. Questo assicura che tutti i file Parquet prodotti attraverso Hive relativi a questa tabella saranno compressi.

Molti ringraziamenti ad Abhayan Sundararajan del team Big SQL Performance per la scoperta e i contributi a questo articolo.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *