txt - gestion de archivos en python
¿Métodos para escribir archivos de parquet usando Python? (3)
Tengo problemas para encontrar una biblioteca que permita escribir archivos de Parquet con Python. Puntos de bonificación si puedo usar Snappy o un mecanismo de compresión similar junto con él.
Hasta ahora, el único método que he encontrado es usar Spark con el pyspark.sql.DataFrame
parquet pyspark.sql.DataFrame
.
Tengo algunos scripts que necesitan escribir archivos de Parquet que no son trabajos de Spark. ¿Hay algún método para escribir archivos de parquet en Python que no implique pyspark.sql
?
usando fastparquet
puede escribir un pandas df
a parquet, ya sea con snappy
o gzip
, de la siguiente manera:
Asegúrate de haber instalado lo siguiente:
$ conda install python-snappy
$ conda install fastparquet
hacer importaciones
import pandas as pd
import snappy
import fastparquet
asume que tienes los siguientes pandas df
df = pd.DataFrame(data={''col1'': [1, 2], ''col2'': [3, 4]})
enviar df
a parquet con snappy
compresión
df.to_parquet(''df.snap.parquet'',compression=''snappy'')
enviar df
a parquet con compresión gzip
df.to_parquet(''df.gzip.parquet'',compression=''gzip'')
comprobar:
leer parquet de nuevo en pandas df
pd.read_parquet(''df.snap.parquet'')
o
pd.read_parquet(''df.gzip.parquet'')
salida:
col1 col2
0 1 3
1 2 4
fastparquet tiene soporte de escritura, aquí hay un fragmento para escribir datos en un archivo
from fastparquet import write
write(''outfile.parq'', df)
Actualización (marzo de 2017): Actualmente hay 2 bibliotecas capaces de escribir archivos de parquet:
Parece que ambos están aún en un gran desarrollo y vienen con una serie de exenciones de responsabilidad (por ejemplo, no admiten datos anidados), por lo que tendrá que comprobar si admiten todo lo que necesita.
ANTIGUA RESPUESTA:
A partir de la 2.2016 parece que NO hay una biblioteca solo para python capaz de escribir archivos Parquet.
Si solo necesitas leer los archivos de Parquet hay python-parquet .
Como solución pyspark.sql
, tendrá que confiar en algún otro proceso, como pyspark.sql
(que utiliza Py4J y se ejecuta en la JVM, por lo que no se puede usar directamente desde su programa de CPython promedio).