Activar la compresión Snappy para mejorar el rendimiento en Big SQL y Hive – Hadoop Dev

Big SQL soporta diferentes formatos de archivo. Lea este artículo para obtener más información sobre los diferentes formatos de archivo soportados por Big SQL. La distinción de qué tipo de formato de archivo se va a utilizar se hace durante la creación de la tabla. Big SQL admite la creación y población de tablas tanto desde Big SQL como desde Hive. Una de las mayores ventajas de Big SQL es que se sincroniza con Hive Metastore. Esto significa que las tablas de Big SQL pueden crearse y poblarse en Big SQL o crearse en Big SQL y poblarse desde Hive. Las tablas de Hive también se pueden poblar desde Hive y luego acceder a ellas desde Big SQL después de sincronizar los catálogos.

Cuando se cargan los datos en las tablas de Parquet, Big SQL utilizará por defecto la compresión SNAPPY. Para Hive, por defecto la compresión no está habilitada, como resultado la tabla podría ser significativamente más grande si se crea y/o puebla en Hive. Las siguientes secciones describirán cómo habilitar la compresión SNAPPY para las tablas pobladas en Hive en IBM Open Platform (antes de Big SQL v5) y HortonWorks Data Platform (desde Big SQL v5 y en adelante).

Creación de una tabla de Big SQL utilizando el formato Parquet

Cuando se crean tablas en Big SQL, se puede elegir el formato Parquet utilizando la cláusula STORED AS PARQUET en la sentencia CREATE HADOOP TABLE como en este ejemplo:

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

Por defecto, Big SQL utilizará la compresión SNAPPY al escribir en tablas Parquet. Esto significa que si los datos se cargan en Big SQL utilizando los comandos LOAD HADOOP o INSERT…SELECT, entonces la compresión SNAPPY está habilitada por defecto.

Creación de tablas Hive utilizando el formato Parquet

Si las tablas Parquet se crean utilizando Hive, entonces el valor por defecto es no tener ninguna compresión habilitada. El siguiente ejemplo muestra la sintaxis de una tabla Parquet creada en Hive:

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

Note que la sintaxis es la misma sin embargo el comportamiento es diferente. Por defecto Hive no utilizará ninguna compresión al escribir en tablas Parquet.

Comparación de los tamaños de las tablas Parquet de Big SQL y Hive

La siguiente tabla muestra el tamaño de la tabla para una tabla utilizando el formato de archivo Parquet cuando la tabla se rellena utilizando Big SQL LOAD HADOOP y Big SQL INSERT…SELECT vs Hive INSERT…SELECT:

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

Dado que los archivos Parquet creados con Big SQL están comprimidos, el tamaño total de la tabla es mucho menor. La tabla creada y poblada en Big SQL es casi la mitad del tamaño de la tabla creada en Big SQL y luego poblada desde Hive.

Habilitar la compresión SNAPPY en Hive

A partir de Hive 0.13, la propiedad de la tabla ‘PARQUET.COMPRESS’=’SNAPPY’ se puede establecer para habilitar la compresión SNAPPY. También puede establecer parquet.compression=SNAPPY en la sección «Custom hive-site settings» en Ambari para IOP o HDP, lo que asegurará que Hive siempre comprima cualquier archivo Parquet que produzca. Aquí hay un ejemplo de uso de la propiedad de la tabla durante una declaración de creación de la tabla en 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'); 

Note que si la tabla se crea en Big SQL y luego se rellena en Hive, entonces esta propiedad de la tabla también se puede utilizar para activar la compresión SNAPPY. Por ejemplo esta es la sintaxis para crear una tabla Big SQL con la compresión SNAPPY habilitada. Esto puede ser útil si las sentencias INSERT…SELECT van a ser conducidas desde 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 compresión snappy habilitada en Hive observamos los siguientes tamaños de tabla:

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

Con esta propiedad el tamaño de la tabla bajó de 280GB a 163GB, esto es una compresión aproximada de casi dos veces. No sólo la tabla ocupará menos espacio en HDFS, sino que también puede haber una ganancia de rendimiento significativa al acceder a los datos para Big SQL o Hive. La recomendación es establecer ‘parquet.compress=SNAPPY’ en las TBLPROPERTIES al crear una tabla Parquet o establecer ‘parquet.compression.SNAPPY’ en hive-site a través de Ambari. Esto asegura que todos los archivos Parquet producidos a través de Hive relacionados con esta tabla serán comprimidos.

Muchas gracias a Abhayan Sundararajan del equipo de Big SQL Performance por el descubrimiento y las contribuciones hacia este documento.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *