Acuchillar parquet sin salir de casa

Acuchillar parquet sin salir de casa

los pandas leen el parqué

Fíjese bien en el suelo de madera de la foto de la derecha. Un ojo agudo podría llegar a la conclusión de que esta rica extensión está formada por tiras macizas de roble rojo, una de las frondosas estadounidenses más populares. Ese ojo se equivocaría, sobre todo. Claro, es roble en la parte superior, pero eso es sólo una piel de chapa de madera. Debajo hay más capas finas de madera, todas ellas pegadas para formar un sándwich de madera contrachapada llamado suelo de ingeniería.

Desde su invención en la década de 1960, los suelos de madera de ingeniería han mejorado su aspecto y rendimiento, y representan el 30% de todos los suelos de madera que se venden hoy en día en Estados Unidos. Disponibles en docenas de especies de madera, y con nuevos efectos de superficie, como el raspado a mano, para conseguir una pátina desgastada por el tiempo, estos tablones de alta tecnología quedan ahora bien en cualquier casa antigua, ya sea un foursquare de 1910 o un rancho elevado de los años 70.

La mayoría de las tablas vienen con un acabado de fábrica que durará más que uno aplicado en su casa sobre madera maciza, y estarán listas para los pasos el día que las coloque. Los tableros de ingeniería también resuelven problemas, permitiéndole utilizarlos donde los listones sólidos a menudo no pueden ir, como en sótanos o directamente sobre losas de hormigón. Y lo que es mejor, los propietarios de viviendas con un presupuesto ajustado pueden colocar las tablas ellos mismos, ahorrando un dineral en la instalación profesional y obteniendo resultados de gran aspecto en un fin de semana.

ejemplo de lectura de parquet en pandas

Pero eso devuelve un pandas DataFrame como si el filtro no funcionara, es decir, tengo filas con varios valores de event_name. ¿Hay algo que se me escapa o algo que he entendido mal? Podría filtrar después de obtener el DataFrame de pandas pero utilizaría mucho más espacio de memoria del necesario.

Para poder utilizar filtros es necesario almacenar los datos en formato Parquet utilizando particiones. Cargar unas pocas columnas de Parquet y particiones de muchas puede resultar en mejoras masivas en el rendimiento de E/S con Parquet frente a CSV. Parquet puede particionar archivos basándose en los valores de uno o más campos y crea un árbol de directorios para las combinaciones únicas de los valores anidados, o sólo un conjunto de directorios para una columna de partición. La documentación de PySpark Parquet explica bastante bien cómo funciona Parquet.

También existe la partición de grupos de filas si necesitas dividir aún más tus datos, pero la mayoría de las herramientas sólo soportan la especificación del tamaño del grupo de filas y tienes que hacer la búsqueda clave–>grupo de filas tú mismo, lo cual es feo (feliz de responder sobre eso en otra pregunta).

pandas leer parquet chunksize

Actualmente estamos cargando el archivo parquet en un dataframe en Spark y obteniendo el esquema del dataframe para mostrarlo en alguna UI de la aplicación. Pero inicializar el contexto de Spark y cargar el marco de datos y obtener el esquema del marco de datos es una actividad que consume mucho tiempo. Así que buscando una forma alternativa para obtener el esquema.

Ahora hay una manera más fácil con el método read_schema. Tenga en cuenta que devuelve en realidad un dict donde su esquema es un literal de bytes, por lo que necesita un paso adicional para convertir su esquema en un dict apropiado de python.

Como otros comentaristas han mencionado, PyArrow es la forma más fácil de obtener el esquema de un archivo Parquet con Python. Mi respuesta entra en más detalle sobre el esquema que devuelve PyArrow y los metadatos que se almacenan en los archivos Parquet.

Asegúrate de que entiendes los metadatos a nivel de columna como min / max. Eso te ayudará a entender algunas de las características interesantes como el filtrado pushdown de predicados que los archivos Parquet permiten en los sistemas de big data.

de pandas a parquet

¿Cómo leer un conjunto de datos de Parquet de tamaño modesto en un DataFrame de Pandas en memoria sin configurar una infraestructura de computación en clúster como Hadoop o Spark? Esta es sólo una cantidad moderada de datos que me gustaría leer en memoria con un simple script de Python en un ordenador portátil. Los datos no residen en HDFS. Están en el sistema de archivos local o posiblemente en S3. No quiero girar y configurar otros servicios como Hadoop, Hive o Spark.

Estos motores son muy similares y deberían leer/escribir archivos de formato parquet casi idénticos. Estas librerías se diferencian por tener diferentes dependencias subyacentes (fastparquet por usar numba, mientras que pyarrow usa una librería c).

Actualización: desde el momento en que respondí a esto se ha trabajado mucho en este aspecto en Apache Arrow para una mejor lectura y escritura de parquet. También: http://wesmckinney.com/blog/python-parquet-multithreading/

Cuando escriba en parquet, considere usar la compresión brotli. Estoy consiguiendo una reducción de tamaño del 70% de un archivo de parquet de 8GB utilizando la compresión brotli. Brotli hace un archivo más pequeño y una lectura/escritura más rápida que gzip, snappy, pickle. Aunque pickle puede hacer tuplas mientras que parquet no.

Entradas relacionadas

Esta web utiliza cookies propias para su correcto funcionamiento. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad