¿Qué es el parqué?

Formas y gráficos de datos SaaS sobre la imagen de una mujer en la tecnología

Apache Parquet es un formato de archivo de código abierto utilizado a menudo para big data en clusters Hadoop. Parquet almacena datos utilizando un formato de datos plano comprimido y stockage en colonnes . Apache Spark proporciona APIs de alto nivel para uso de los desarrolladores, incluyendo soporte para Java, Scala, Python y R. Parquet es muy adecuado para almacenar eficientemente estructuras de datos anidadas.

Características del parquet

Entender las características de Parquet puede arrojar luz sobre por qué es una opción tan atractiva para los profesionales de los datos:

  • stockage en colonnes: Parquet almacena los datos en columnas, lo que resulta ideal para las consultas analíticas. Con stockage en colonnes, cada columna se almacena de forma independiente, lo que permite un acceso mucho más rápido a puntos de datos específicos en comparación con los formatos basados en filas.
  • Compresión eficaz: Una de las características más notables de Parquet es su capacidad para comprimir datos de forma eficaz. stockage en colonnes permite almacenar juntos tipos de datos similares, lo que hace que algoritmos de compresión como Snappy, Gzip y LZO sean muy eficaces. Esto reduce el tamaño total del archivo y supone un ahorro en costes de almacenamiento.
  • Soporte de esquemas: Los archivos Parquet incluyen Embarqué métadonnées que describe la estructura de los datos, lo que simplifica el procesamiento y garantiza la cohérence a través de varios sistemas. El esquema se almacena junto con los datos, lo que facilita a las herramientas de tratamiento de datos su correcta comprensión e interpretación.
  • Código abierto y multiplataforma: Parquet es un formato de código abierto, y su flexibilidad garantiza que funcione en diferentes plataformas de datos y marcos de procesamiento. Al estar ampliamente adoptado en la comunidad de código abierto, es compatible con diversas herramientas y plataformas de big data, lo que le confiere una gran versatilidad.

Ventajas del parquet

Las ventajas de utilizar Parquet van más allá de sus características técnicas y ofrecen un valor real a las organizaciones que manejan grandes volúmenes de datos:

  • Rendimiento mejorado: Los archivos Parquet soportan predicate pushdown, una función que permite a las consultas omitir datos innecesarios y escanear sólo las secciones relevantes del archivo. Esto se traduce en un mayor rendimiento de las consultas en comparación con otros formatos como CSV, especialmente cuando se trata de consultas analíticas complejas.
  • Menores costes de almacenamiento: Las ventajas de compresión de Parquet son significativas. Como los datos se almacenan de forma más eficiente, ocupan menos espacio, lo que se traduce en una reducción de los costes de almacenamiento. Esto es especialmente importante en entornos de big data, donde el volumen de datos puede convertirse rápidamente en enorme.
  • Optimizado para cargas de trabajo analíticas: Parquet se creó específicamente para cargas de trabajo analíticas. En entornos en los que es necesario ejecutar consultas frecuentes y procesar datos a gran escala, Parquet brilla como el formato preferido. Permite a las organizaciones procesar los datos con mayor rapidez y eficacia.
  • Compatibilidad con marcos de procesamiento de datos: Parquet se integra perfectamente con marcos de procesamiento de datos populares como Apache Spark, Apache Hive y Apache Flink. Esto lo convierte en una opción natural para las organizaciones que ya utilizan estas herramientas.

Ventajas de almacenar datos en formato de columnas

El almacenamiento de datos en un formato columnar como Parquet presenta importantes ventajas frente a los formatos tradicionales basados en filas, como CSV:

  • Rendimiento eficiente de las consultas: Una de las principales ventajas de los formatos columnares es que sólo se leen las columnas relevantes durante las consultas, lo que acelera significativamente récupération des données. En cambio, los formatos basados en filas requieren la lectura de todo el archivo, aunque sólo se necesite una pequeña parte de los datos.
  • Mejores tasas de compresión: Dado que los datos en formato columnar suelen ser del mismo tipo y estructura, se pueden comprimir de forma más eficiente. Esto reduce la huella total de almacenamiento de los datos y minimiza el número de recursos necesarios para su transferencia y almacenamiento.
  • Flexibilidad con estructuras de datos complejas: Parquet permite almacenar estructuras de datos anidadas complejas, como arrays, mapas y structs. Esta capacidad lo hace especialmente útil para almacenar datos en sistemas distribuidos modernos, donde las relaciones entre distintos puntos de datos pueden ser intrincadas.

Parquet frente a CSV: principales diferencias

Al comparar Parquet con el formato CSV más tradicional, salen a la luz varias diferencias importantes:

  • Eficiencia de almacenamiento: Los archivos Parquet son mucho más eficientes en términos de espacio que los archivos CSV, principalmente debido a su estructura en columnas y a sus mejores técnicas de compresión. Un archivo CSV puede ser mucho más grande, especialmente con grandes conjuntos de datos.
  • Rendimiento de las consultas: El formato en columnas de Parquet permite realizar consultas más rápidas y específicas, mientras que los archivos CSV requieren cargar todo el jeu de données en la memoria. Esto puede ralentizar drásticamente el rendimiento de las consultas, especialmente cuando se trata de grandes conjuntos de datos.
  • Escalabilidad: Parquet es mucho más escalable que CSV. A medida que tu jeu de données crece en terabytes o incluso petabytes, Parquet maneja el tamaño y la complejidad mucho mejor que CSV.
  • Integridad de los datos: Con Parquet, métadonnées y el esquema se almacenan junto con los datos, lo que ayuda a mantener la integridad y la estructura del jeu de données. Por el contrario, los archivos CSV carecen de información sobre el esquema, lo que puede dar lugar a incoherencias y errores cuando los datos se transfieren entre distintos sistemas.

Almacenamiento

Un archivo Parquet está formado por grupos de filas. Los grupos de filas contienen un subconjunto de datos almacenados como páginas. Las páginas se agrupan en chunks de columnas. Los chunks de columnas contienen información métadonnées que incluye el número de valores definidos, su tamaño y estadísticas como el número de valores nulos y mín/máx.

Tipos de datos Parquet

Parquet admite varios tipos de datos de 320 bits. Entre ellos se incluyen los siguientes:

  • BOOLEAN: booleano de 1 bit
  • INT32: 32 bits con signo
  • INT64: 64 bits con signo
  • INT96: 96 bits con signo
  • FLOAT: valores de coma flotante IEEE de 32 bits
  • DOBLE: valores de coma flotante IEEE de 64 bits
  • BYTE_ARRAY: matrices de bytes arbitrariamente largas
  • FIXED_LEN_BYTE_ARRAY: matrices de bytes de longitud fija

Compresión en parqué

Parquet almacena grandes conjuntos de datos, por lo que la compresión es una característica importante de este formato de archivo. Se pueden aplicar diferentes algoritmos de compresión por columna. La distribución base incluye los siguientes códecs de compresión:

  • GZIP: es adecuado para el almacenamiento estático a largo plazo, como el archivo de datos. GZIP ofrece mayor compresión que Snappy, pero consume más recursos processeur .
  • Snappy: es una buena opción para datos calientes a los que se accede con frecuencia. La velocidad de descompresión de Snappy es menor que la de GZIP. Snappy se puede dividir (a diferencia de GZIP).
  • LZO: es una buena opción si su aplicación requiere altas velocidades de descompresión.

Hadoop

Hadoop proporciona una plataforma de código abierto que escala horizontalmente para acomodar cargas de trabajo de big data. Parquet se desarrolló principalmente para entornos Hadoop. Muchas organizaciones crearon clústeres Hadoop en el apogeo del movimiento big data. Desafortunadamente, las habilidades de ajuste de Hadoop se han vuelto escasas, por lo que las organizaciones están trasladando sus datos de Parquet a arquitecturas más modernas. Los sistemas Hadoop como Pig, Hive y Spark utilizan Parquet. Spark proporciona la mejor API para acceder a los datos de Parquet. Los sistemas modernos de almacenamiento de datos, como Actian Data Platform, utilizan un conector Spark para acceder a los datos de Parquet dondequiera que residan, en las instalaciones o en la nube.

Actian Data Platform

Mediante un conector Spark, Actian Data Platform puede acceder a Parquet como un objeto externo. Los predicados pueden ser enviados a Parquet para mejorar la velocidad de acceso. Los datos externos de Parquet son fáciles de cargar porque las peticiones pueden envolverse en SQL. La carga de datos de Parquet en tablas proporciona el acceso más rápido a los datos gracias al procesamiento vectorial que carga datos columnares en la caché del processeur a través de un servidor o clúster para maximizar el procesamiento paralelo de las consultas. Las pruebas comparativas han demostrado que Actian Data Platform puede escalar un orden de magnitud por encima de Hive.

En los ejemplos siguientes, una fuente de datos externa de Parquet se mapea como una tabla externa antes de cargar sus datos en una tabla interna para un acceso más rápido de la aplicación.

Carga de datos Parquet desde Google Cloud Storage:

DROP TABLE IF EXISTS pemdata_gs;

CREAR TABLA EXTERNA pemdata_gs (

timeperiod VARCHAR(20),

flujo1 VARCHAR(20),

flujo2 VARCHAR(20),

ocupación1 VARCHAR(20),

velocidad1 VARCHAR(20)

) utilizando spark

CON

reference='gs://avpemdata/part*.parquet',

format='parquet';

DROP TABLE IF EXISTS pemdata;

CREAR TABLA pemdata (

timeperiod TIMESTAMP,

flujo1 VARCHAR(20),

flujo2 VARCHAR(20),

ocupación1 VARCHAR(20),

velocidad1 VARCHAR(20)

);

Carga de datos de parquet desde Azure Blob Storage:

DROP TABLE IF EXISTS pemdata_adl;

CREAR TABLA EXTERNA pemdata_adl (

timeperiod VARCHAR(20),

flujo1 VARCHAR(20),

flujo2 VARCHAR(20),

ocupación1 VARCHAR(20),

velocidad1 VARCHAR(20)

) utilizando spark

CON

reference='abfs://parquetdata@mydata.dfs.core.windows.net//part*.parquet',

format='parquet';

DROP TABLE IF EXISTS pemdata;

CREAR TABLA pemdata (

timeperiod TIMESTAMP,

flujo1 VACHAR(20),

flujo2 VARCHAR(20),

ocupación1 VARCHAR(20),

velocidad1 VARCHAR(20)

);

INSERT INTO pemdata SELECT * FROM pemdata_adl;

Carga de datos de parquet desde el almacenamiento de AWS S3:

DROP TABLE IF EXISTS pemdata_s3;

CREAR TABLA EXTERNA pemdata_s3 (

timeperiod VARCHAR(20),

flujo1 VARCHAR(20),

flujo2 VARCHAR(20),

ocupación1 VARCHAR(20),

velocidad1 VARCHAR(20)

) utilizando spark

CON

reference='s3a://avpemdata/part*.parquet',

format='parquet';

DROP TABLE IF EXISTS pemdata;

CREAR TABLA pemdata (

timeperiod TIMESTAMP,

flujo1 VARCHAR(20),

flujo2 VARCHAR(20),

ocupación1 VARCHAR(20),

velocidad1 VARCHAR(20)

);

INSERT INTO pemdata SELECT * FROM pemdata_s3;