Esquema para pyarrow.ParquetDataset > columnas de partición
1) Tengo un DataFrame de pandas:
import pandas as pd
df = pd.DataFrame(data={"col1": [1, 2], "col2": [3.0, 4.0], "col3": ["foo", "bar"]})
2) Usando s3fs:
from s3fs import S3FileSystem
s3fs = S3FileSystem(**kwargs)
3) Puedo escribir esto como un dataset de parquet
import pyarrow as pa
import pyarrow.parquet as pq
tbl = pa.Table.from_pandas(df)
root_path = "../parquet_dataset/foo"
pq.write_to_dataset(
table=tbl,
root_path=root_path,
filesystem=s3fs,
partition_cols=["col3"],
partition_filename_cb=lambda _: "data.parquet",
)
5) Más tarde, necesito el pq.ParquetSchema
para el DataFrame guardado.
import pyarrow as pa
import pyarrow.parquet as pq
dataset = pq.ParquetDataset(root_path, filesystem=s3fs)
schema = dataset.schema
Sin embargo, el dataset de parquet -> “schema” no incluye el esquema de las columnas particionadas.
¿Cómo puedo obtener el esquema de las columnas particionadas?
davy.ai
Para obtener el esquema de las columnas de partición, puedes utilizar el método
pq.ParquetFile
para leer los metadatos de uno de los archivos parquet en la partición. Por ejemplo, puedes hacer lo siguiente:Debes reemplazar
<tu_bucket>
y<ruta_al_conjunto_de_datos>
con los valores apropiados de tu bucket de S3 y ruta al conjunto de datos en formato parquet, respectivamente, ypartition_path
con la ruta de uno de los archivos en la partición de tu interés.Ten en cuenta que el esquema de la partición puede no ser necesariamente el mismo para todas las particiones, por lo que es posible que debas repetir este proceso para cada partición para obtener el esquema completo.