Diferencias entre Apache Arrow y Parquet

Publicado el 24 diciembre 2021 por Daniel Rodríguez @analyticslane

Apache Arrow y Parquet son dos formatos modernos para con los que es posible conseguir archivos más pequeños que CSV, además de unos menores tiempos de lectura y escritura. Veamos a continuación las diferencias que existen entre Apache Arrow y Parquet.

Apache Arrow

Apache Arrow es una biblioteca, disponible para múltiples lenguajes de programación, que proporciona estructuras de datos en columnas para su uso en aplicaciones de análisis de datos. El uso de estructuras tabulares ofrece ciertas ventajas frente a almacenar los datos en filas. Permitiendo un acceso aleatorio mucho más rápido a cada una de las celdas ya que estas se encuentran al lado de la anterior. Lo que hace más eficiente las tareas de iteración sobre los elementos de una columna.

Pero, si Apache Arrow es una biblioteca de software ¿qué son los archivos Arrow? En Apache Arrow también se define un protocolo binario de serialización para empaquetar colecciones de matrices Arrow y emplearlas para la comunicación entre procesos. Pudiéndose usar este tanto para enviar los datos a otro proceso como para almacenar en disco y posteriormente importar en memoria en otro sistema.

Parquet

Por otro lado, Parquet es un formato de archivo en columnas para la serialización de datos. Al leer un archivo Parquet es necesario descomprimir y decodificar su contenido en algún tipo de estructura de datos en memoria. No proporcionando, a diferencia de Apache Arrow, una estructura de datos para almacenar esta en memoria, sino que el contenido del archivo ha de ser traducido a una nativa del lenguaje, como puede ser el caso de los objetos DataFrame.

El formato Parquet está diseñado específicamente para reducir el tamaño de las operaciones de lectura y escritura. Lo que se consigue a costa de utilizar la CPU para codificar y decodificar los datos.

Diferencia entre Apache Arrow y Parquet

Así que, una vez visto en qué consiste cada uno de los archivos, se puede ver que en muchas aplicaciones el uso de Arrow y Parquet es indiferente. Aunque es necesario tener algunas cosas en mente a la hora de seleccionar uno u otro.

  • Parquet se ha diseñado desde el principio para la creación de archivos, es decir, se espera que cualquier programa futuro que pueda leer este formato lo importara sin problemas. Mientras que Apache Arrow es una librería que proporciona estructura de datos.
  • El proceso de lectura es generalmente más costoso en el caso de Parquet, ya que los datos se deben descomprimir y decodificar para su uso en memoria. Por otro lado, en el caso de Arrow, no es necesario decodificar los datos.
  • Los archivos Parquet suelen ser mucho más pequeños que el protocolo Arrow en disco debido a los esquemas de codificación de datos que utiliza Parquet.

Conclusiones

Apache Arrow y Parquet son dos excelentes opciones para trabajar con grandes conjuntos de datos. Reduciendo el tamaño de los archivos frente a las soluciones tradicionales como los archivos CSV. Aunque, si únicamente queremos almacenar los datos en archivos y seguir usando nuestras estructuras de datos, la mejor opción es usar el formato Parquet.