Как прочитать файл parquet, разделенный папкой с датой, в dataframe из s3 с помощью python?

#python #pandas #dataframe #pyarrow #fastparquet

#python #pandas #dataframe #pyarrow #fastparquet

Вопрос:

Используя python, я должен перейти в папку cwp, войти в папку date и прочитать файл parquet. У меня есть эта структура папок внутри s3.

Пример пути s3:

имя корзины = lla.analytics.dev

path = bigdata/dna/fixed/cwp/dt=ГГГГ-ММ-ДД/file.parquet

 s3://lla.analytics.dev/bigdata/dna/fixed/cwp/dt=2021-11-24/file.parquet
                                             dt=2021-11-25/file.parquet
                                             dt=2021-11-26/file.parquet
                                             ........................
                                             ........................
                                             dt=YYYY-MM-DD/file.parquet
 

Я должен получить доступ к папке с недавними датами и прочитать файлы в dataframe из s3

Комментарии:

1. Какая у вас версия pandas? ( pd.__version__ )

2. это версия 1.3.4 @user17242583

3. Попробуйте добавить эти две строки перед вызовом fp_obj.to_pandas() : import pandas и print(pandas.__version__)

4. Добавьте его перед df = fp_obj.to_pandas() строкой.

Ответ №1:

Я вижу, у вас есть метка пайрроу. Если вы хотите использовать pyarrow (отказ от ответственности, я работаю с pyarrow), вы должны быть в состоянии сделать:

 import pyarrow.fs as fs
import pyarrow.dataset as ds

s3, path = fs.FileSystem.from_uri("s3://lla.analytics.dev/bigdata/dna/fixed/cwp")
dataset = ds.dataset(path, partitioning='hive', filesystem=s3, format='parquet')
table = dataset.to_table()
 

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

Комментарии:

1. Я получаю эту ошибку: при получении информации для ключа ‘Bigdata / DNA / fixed / cwp’ в корзине ‘lla.analytics.dev’: ошибка AWS [код 15]: нет тела ответа.

2. Строка набора данных выдает некоторую ошибку .. приведенный выше код не работает…

3. Мое лучшее предположение — проблема с разрешениями или проблема с регионом. По умолчанию этот код будет использовать ваш регион и секретный ключ из тех же файлов конфигурации, которые использует интерфейс командной строки AWS . Можете ли вы перечислить файлы в этом сегменте, используя AWS CLI?

4. «Не удалось импортировать модуль’lambda_function’: нет модуля с именем’pyarrow._dataset'»,

5. Я пытаюсь выполнить приведенный выше код в Lambda, но получаю эту ошибку