stringtranslate.com

Parquet apache

Apache Parquet es un formato de almacenamiento de datos en columnas gratuito y de código abierto en el ecosistema Apache Hadoop . Es similar a RCFile y ORC , los otros formatos de archivos de almacenamiento en columnas de Hadoop , y es compatible con la mayoría de los marcos de procesamiento de datos relacionados con Hadoop . Proporciona esquemas de codificación y compresión de datos eficientes con un rendimiento mejorado para manejar datos complejos en masa.

Historia

El proyecto de código abierto para crear Apache Parquet comenzó como un esfuerzo conjunto entre Twitter [3] y Cloudera . [4] Parquet fue diseñado como una mejora del formato de almacenamiento en columnas Trevni creado por Doug Cutting , el creador de Hadoop. La primera versión, Apache Parquet  1.0, se lanzó en julio de 2013. Desde el 27 de abril de 2015, Apache Parquet ha sido un proyecto de alto nivel patrocinado por la Apache Software Foundation (ASF). [5] [6]

Características

Apache Parquet se implementa utilizando el algoritmo de ensamblaje y destrucción de registros [7] , que se adapta a las estructuras de datos complejas que se pueden utilizar para almacenar datos. [8] Los valores de cada columna se almacenan en ubicaciones de memoria contiguas, lo que proporciona los siguientes beneficios: [9]

Apache Parquet se implementa utilizando el marco Apache Thrift , lo que aumenta su flexibilidad; puede funcionar con varios lenguajes de programación como C++ , Java , Python , PHP , etc. [10]

A partir de agosto de 2015, [11] Parquet es compatible con los marcos de procesamiento de big data, incluidos Apache Hive , Apache Drill , Apache Impala , Apache Crunch, Apache Pig , Cascading , Presto y Apache Spark . Es uno de los formatos de datos externos utilizados por la biblioteca de análisis y manipulación de datos de Python de Pandas .

Compresión y codificación

En Parquet, la compresión se realiza columna por columna, lo que permite utilizar distintos esquemas de codificación para datos de texto y enteros. Esta estrategia también deja la puerta abierta para que se implementen esquemas de codificación más nuevos y mejores a medida que se inventen.

Codificación de diccionario

Parquet tiene una codificación de diccionario automática habilitada dinámicamente para datos con una pequeña cantidad de valores únicos (es decir, por debajo de 10 5 ) que permite una compresión significativa y aumenta la velocidad de procesamiento. [12]

Empaquetado de bits

El almacenamiento de números enteros se realiza normalmente con 32 o 64 bits dedicados para cada número entero. En el caso de números enteros pequeños, agrupar varios números enteros en el mismo espacio hace que el almacenamiento sea más eficiente. [12]

Codificación de longitud de ejecución(LLE)

Para optimizar el almacenamiento de múltiples ocurrencias del mismo valor, se almacena un único valor una vez junto con el número de ocurrencias. [12]

Parquet implementa un híbrido de empaquetamiento de bits y RLE, en el que la codificación cambia en función de la que produzca los mejores resultados de compresión. Esta estrategia funciona bien para ciertos tipos de datos enteros y se combina bien con la codificación de diccionario. [12]

Comparación

Apache Parquet es comparable a los formatos de archivo RCFile y ORC (Optimized Row Columnar) : los tres entran en la categoría de almacenamiento de datos en columnas dentro del ecosistema Hadoop. Todos tienen mejor compresión y codificación con un rendimiento de lectura mejorado a costa de escrituras más lentas. Además de estas características, Apache Parquet admite una evolución de esquema limitada [ cita requerida ] , es decir, el esquema se puede modificar de acuerdo con los cambios en los datos. También proporciona la capacidad de agregar nuevas columnas y fusionar esquemas que no entren en conflicto.

Apache Arrow está diseñado como un complemento en memoria para formatos en columnas en disco como Parquet y ORC. Los proyectos Arrow y Parquet incluyen bibliotecas que permiten la lectura y escritura entre los dos formatos. [ cita requerida ]

Implementaciones

Las implementaciones conocidas de Parquet son:

Véase también

Referencias

  1. ^ "Apache Parquet – Releases". Apache.org . Archivado desde el original el 22 de febrero de 2023 . Consultado el 22 de febrero de 2023 .
  2. ^ "Código fuente de Parquet-MR". GitHub . Archivado desde el original el 11 de junio de 2018 . Consultado el 2 de julio de 2019 .
  3. ^ "Fecha de lanzamiento". Archivado desde el original el 20 de octubre de 2016. Consultado el 12 de septiembre de 2016 .
  4. ^ "Presentación de Parquet: almacenamiento en columnas eficiente para Apache Hadoop - Blog de ingeniería de Cloudera". 13 de marzo de 2013. Archivado desde el original el 4 de mayo de 2013. Consultado el 22 de octubre de 2018 .
  5. ^ "Apache Parquet allana el camino para un mejor almacenamiento de datos Hadoop". 28 de abril de 2015. Archivado desde el original el 31 de mayo de 2017. Consultado el 21 de mayo de 2017 .
  6. ^ "La Apache Software Foundation anuncia Apache™ Parquet™ como proyecto de alto nivel : Blog de la Apache Software Foundation". 27 de abril de 2015. Archivado desde el original el 20 de agosto de 2017. Consultado el 21 de mayo de 2017 .
  7. ^ "Los algoritmos de striping y ensamblaje del documento Dremel inspirado en Google". github . Archivado desde el original el 26 de octubre de 2020 . Consultado el 13 de noviembre de 2017 .
  8. ^ "Documentación de Apache Parquet". Archivado desde el original el 5 de septiembre de 2016. Consultado el 12 de septiembre de 2016 .
  9. ^ "Apache Parquet Cloudera". Archivado desde el original el 19 de septiembre de 2016. Consultado el 12 de septiembre de 2016 .
  10. ^ "Apache Thrift". Archivado desde el original el 12 de marzo de 2021. Consultado el 14 de septiembre de 2016 .
  11. ^ "Marcos de trabajo compatibles". Archivado desde el original el 2 de febrero de 2015. Consultado el 12 de septiembre de 2016 .
  12. ^ abcd "Anuncio de Parquet 1.0: almacenamiento en columnas para Hadoop | Blogs de Twitter". blog.twitter.com . Archivado desde el original el 2016-10-20 . Consultado el 2016-09-14 .

Enlaces externos