Demostración de los formatos de datos de Hadoop: Avro, ORC y Parquet

¿Qué es Avro/ORC/Parquet?

Avro es un formato de datos basado en filas slash un sistema de serialización de datos lanzado por el grupo de trabajo de Hadoop en 2009. El esquema de datos se almacena como JSON (que significa legible para el ser humano) en la cabecera mientras que el resto de los datos se almacenan en formato binario. Un punto brillante de Avro es su robusto soporte para la evolución de esquemas.

ORC es un formato de datos columnar de filas altamente optimizado para la lectura, escritura y procesamiento de datos en Hive y fue creado por Hortonworks en 2013 como parte de la iniciativa Stinger para acelerar Hive. Los archivos ORC se componen de franjas de datos en las que cada franja contiene el índice, los datos de la fila y el pie de página (en el que se almacenan convenientemente en caché estadísticas clave como el recuento, el máximo, el mínimo y la suma de cada columna).

Parquet es un formato de datos columnares de fila creado por Cloudera y Twitter en 2013. Los archivos Parquet constan de grupos de filas, cabecera y pie de página, y en cada grupo de filas se almacenan juntos los datos de las mismas columnas. Parquet está especializado en almacenar y procesar eficientemente tipos de datos anidados.

Cosas a tener en cuenta

Patrón de consulta de lectura/escritura intensiva &: Los formatos de datos basados en filas son en general mejores para almacenar datos de escritura intensiva porque añadir nuevos registros es más fácil. Si sólo se va a consultar un pequeño subconjunto de columnas con frecuencia, los formatos columnares serán sus buenos amigos, ya que sólo se accederá y se transmitirá a las columnas necesarias (mientras que los formatos de filas necesitan tirar de todas las columnas).

Compresión: La compresión es uno de los aspectos clave a considerar aquí ya que la compresión ayuda a reducir los recursos necesarios para almacenar y transmitir los datos. Especialmente cuando se obtiene una gran cantidad de datos (por ejemplo, datos de IoT), se necesita una buena compresión. Los formatos en columnas son mejores que los formatos basados en filas en términos de compresión porque el almacenamiento del mismo tipo de valores juntos permite una compresión más eficiente. En concreto, se utiliza una codificación diferente y más eficiente para cada columna. Por eso, los formatos en columnas son buenos para los conjuntos de datos dispersos. ORC tiene la mejor tasa de compresión de los tres, gracias a sus franjas.

Evolución del esquema: Uno de los retos del manejo de big data es el cambio frecuente del esquema de datos: por ejemplo, añadir/eliminar columnas y cambiar los nombres de las columnas. Si su esquema de datos cambia mucho y necesita una alta compatibilidad para sus aplicaciones antiguas/nuevas, Avro está aquí para usted. Además, el esquema de datos de Avro está en JSON y Avro es capaz de mantener los datos compactos incluso cuando existen muchos esquemas diferentes.

Columnas anidadas: Si tiene muchas columnas anidadas complejas en su conjunto de datos y a menudo sólo consulta un subconjunto de las subcolumnas, Parquet sería una buena opción. Parquet se implementa utilizando el algoritmo de trituración y ensamblaje de registros descrito en el documento de Dremel, que le permite acceder y recuperar subcolumnas sin tener que tirar del resto de la columna anidada.

Soporte de plataformas: Por último, pero no por ello menos importante, debes tener en cuenta la plataforma/marco de trabajo que utilizas a la hora de elegir un formato de datos, ya que los formatos de datos se comportan de forma diferente dependiendo de dónde se utilicen. ORC funciona mejor con Hive (ya que está hecho para Hive). Spark ofrece un gran soporte para el procesamiento de los formatos Parquet. Avro suele ser una buena opción para Kafka.

Deja una respuesta

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