#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, но получаю эту ошибку