¿Puedo escribir un archivo Parquet en el sistema de archivos local?
Nuevo en Parquet. Tengo un archivo Parquet, lo llamaremos momma.parquet
, que fue producido al leer varios archivos Parquet “baby” en el sistema de archivos local. Los archivos Parquet “baby” fueron creados por pandas.DataFrame.to_parquet()
.
Lo que necesito hacer es escribir momma.parquet
en el sistema de archivos. He leído muchos posts y la documentación de Parquet, y no he encontrado una solución para lo que asumí que sería un proceso bastante sencillo. La documentación de fastparquet menciona utilizar write('outfile.parq', df)
, que toma un dataframe como argumento, pero no debería ser necesario hacerlo.
Aquí está mi código que esperaba que lograra eso:
def make_momma_parquet(csv_filepath, parquet_filepath, numeric_cols, datetime_cols):
"""Crea un parquet a partir de una lista de otros archivos parquet y
escríbelo en el sistema de archivos local
:param csv_filepath: cadena
:param parquet_filepath: cadena
:param numeric_cols: lista de cadenas
:param datetime_cols: lista de cadenas
"""
# lista de archivos parquet
parquet_files = []
# df Dask fuente:
ddf = dd.read_csv(csv_filepath, blocksize='600MB', dtype='object')
# Bebé uno:
# crea un dataframe de Pandas
numeric_df = ddf[numeric_cols].compute()
# hacer algunas operaciones con el dataframe de Pandas y luego
# escribir el archivo parquet
numeric_df.to_parquet(parquet_filepath)
parquet_files.append(parquet_filepath)
# Bebé dos:
# crea un dataframe de Pandas
datetime_df = ddf[datetime_cols].compute()
# hacer algunas operaciones con el dataframe de Pandas y luego
# escribir el archivo parquet
datetime_df.to_parquet(parquet_filepath)
parquet_files.append(parquet_filepath)
# Mamá
hist_parquet = fastparquet.ParquetFile(parquet_files)
# escribir el archivo parquet en el sistema de archivos
davy.ai
Para escribir el archivo
momma.parquet
en el sistema de archivos, puedes usar la funciónfastparquet.writer.write
. Aquí hay un fragmento de código actualizado que debería lograr esto:En este código actualizado, importamos
fastparquet
y usamos la funciónfastparquet.writer.write
para escribir el DataFrame combinadohist_parquet
en el sistema de archivos. La funciónto_pandas
se utiliza para convertirhist_parquet
en un DataFrame de Pandas antes de escribirlo en el disco.