Я пытаюсь прочитать каталог секционированного паркета, хранящийся в корзине s3.
Ради этого вопроса давайте назовем ведро bucket
. У корзины есть одна папка, в которой есть последующие разделы в зависимости от года / месяца / дня / часа.
Итак, если нужно получить файл .parquet, URL будет:
s3://bucket/folder/year/month/day/hour
Я пытался прочитать это так же, как и для любого другого файла для паркета. Я работал с ними недавно. Однако до сих пор я не пробовал читать секционированный файл.
Я включил мой пример кода ниже:
import s3fs
import pandas as pd
import boto3
# Creating an S3 Filesystem (Only required when using S3)
s3 = s3fs.S3FileSystem()
s3_path = "s3://bucket"
directory = 'folder'
# Loading Files (S3)
data = pq.ParquetDataset(f'{s3_path}/{directory}', filesystem = s3).read_pandas().to_pandas()
Это поток, который я использовал, и я знаю, что он работает для общих файлов паркета. Теперь я получаю следующую ошибку:
ValueError: Directory name did not appear to be a partition: 2019
Я уже пытался погрузиться в 2019
, поскольку полагал, что первый уровень имеет только 2019
в качестве папки, поэтому он может подумать, что это подкаталог, а не раздел.
Путь тогда выглядел как s3://bucket/folder/2019
Однако, это дало мне следующую ошибку, аналогично:
ValueError: Directory name did not appear to be a partition: 05
Я также пытался использовать fastparquet
, следуя подходу из этого вопроса: Как читать разделенные файлы паркета из S3, используя pyarrow в python
Это тоже не сработало. Если я попытался распечатать список файлов, используя all_paths_from_s3
из ответа на вопрос, приведенный выше, это дало мне пустой список []
.