Es posible leer archivos de parquet desde S3 como se muestra aquí o aquí .
Estoy trabajando con puntos de acceso S3 . Tener el ARN del punto de acceso S3, ¿es posible leer archivos de parquet desde él?
Estoy intentando con el siguiente código de ejemplo:
import s3fs import pyarrow.parquet as pq S3_ACCESS_POINT_ARN = "..." s3_filesystem = s3fs.S3FileSystem() s3_file_uri = f"{S3_ACCESS_POINT_ARN}/examples/example1.parquet" example1_df = pq.ParquetDataset(s3_file_uri, s3_filesystem).read_pandas().to_pandas()Ejecutarlo resulta con:
ParamValidationError: Parameter validation failed: Invalid bucket name S3_ACCESS_POINT_ARN: Bucket name must match the regex "^[a-zA-Z0-9.\-_]{1,255}$" or be an ARN matching the regex "^arn:(aws).*:s3:[az\-0-9]+:[0-9]{12}:accesspoint[/:][a-zA-Z0-9\-]{1,63}$" También intenté reemplazar / con : en S3_ACCESS_POINT_ARN , lo que da como resultado:
PermissionError: AccessDeniedFinalmente probé usando:
pq.read_table(S3_ACCESS_POINT_ARN, s3_filesystem).to_pandas()lo que resultó en:
OsError: Passed non-file path: S3_ACCESS_POINT_ARNVale la pena mencionar que no hay problemas de acceso con la lectura de archivos desde este punto de acceso, con el siguiente código funcionando:
import boto3 S3_ACCESS_POINT_ARN = "..." s3 = boto3.resource('s3') bucket = s3.bucket(S3_ACCESS_POINT_ARN) bucket.download_file(f"{S3_ACCESS_POINT_ARN}/examples/example1.parquet", "/tmp/examples/example1.parquet") example1_df = pq.read_table("/tmp/examples/example1.parquet").to_pandas()ACTUALIZACIÓN: el punto de acceso S3 no permite operaciones de objetos de lista que no sean de nivel superior:
An error occurred (AccessDenied) when calling the ListObjectsV2 operation: Access Denied Pero no puedo ver ningún parámetro que permita a pyarrow tratar el archivo de parquet como un solo archivo, lo que podría evitar este problema.