Можно ли читать паркетные файлы из точки доступа S3 с помощью pyarrow

Можно читать файлы паркета из S3, как показано здесь или здесь .

Я работаю с точками доступа S3. Имея точку доступа S3 ARN можно ли с нее читать паркетные файлы?

Я пытаюсь использовать следующий пример кода:

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()

Выполнение этого приводит к:

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:[a-z\-0-9]+:[0-9]{12}:accesspoint[/:][a-zA-Z0-9\-]{1,63}$"

Я также попытался заменить / на : в S3_ACCESS_POINT_ARN, что приводит к:

PermissionError: AccessDenied

Наконец, я попытался использовать:

pq.read_table(S3_ACCESS_POINT_ARN, s3_filesystem).to_pandas()

что привело к:

OsError: Passed non-file path: S3_ACCESS_POINT_ARN

Стоит отметить, что проблем с доступом к чтению файлов с этой точки доступа нет, код ниже работает:

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()

ОБНОВЛЕНИЕ: точка доступа S3 не разрешает операции с объектами списка не верхнего уровня:

An error occurred (AccessDenied) when calling the ListObjectsV2 operation: Access Denied

Но я не вижу ни одного параметра, который позволил бы pyarrow обрабатывать файл паркета как один файл, что потенциально могло бы избежать этой проблемы.


person Krzysztof Słowiński    schedule 08.07.2020    source источник
comment
У меня та же проблема, и в сообщении об ошибке говорится: Invalid bucket name "arn:aws:s3:us-east-1:291160143014:accesspoint", поэтому фактическое имя точки доступа удалено из ARN. Я подозреваю, что pyarrow ожидает только путь ведра и еще не поддерживает точки доступа.   -  person taras    schedule 29.10.2020
comment
issues.apache.org/jira/browse/ARROW-9669   -  person taras    schedule 29.10.2020