чтение разделенного набора данных в aws s3 с помощью pyarrow не добавляет столбцы разделов - PullRequest
1 голос
/ 07 января 2020

Я пытаюсь прочитать секционированный набор данных в aws s3, это выглядит так:

MyDirectory--code=1--file.parquet
           --code=2--another.parquet
           --code=3--another.parquet

Я создал file_list, содержащий путь ко всем файлам в каталоге, затем выполнил

df = pq.ParquetDataset(file_list, filesystem=fs).read().to_pandas()

все работает, за исключением того, что в столбце данных df отсутствует код столбца раздела. я попробовал это также, используя один путь к MyDirectory, зашедшему из file_list, но обнаружил ошибку «Найдены файлы в промежуточном каталоге: s3: // bucket / Mydirectoty», я не могу найти никакого ответа в Интернете.

Спасибо вы!

Ответы [ 2 ]

0 голосов
/ 10 января 2020

Если вы довольны другими инструментами, вы можете попробовать dask. Предположим, что все данные, которые вы хотите прочитать, находятся в s3://folder, вы можете просто использовать

import dask.dataframe as dd
storage_options = {
            'key': your_key,
            'secret': your_secret}
df = dd.read_parquet("s3://folder",
                     storage_options=storage_options)
0 голосов
/ 10 января 2020

AWS имеет проект (AWS Data Wrangler ), который помогает в интеграции между Pandas / PyArrow и их сервисами.

Этот фрагмент должен работать:

import awswrangler as wr

# Write
wr.s3.to_parquet(
    df=df,
    path="s3://...",
    mode="overwrite",
    dataset=True,
    database="my_databse",  # Optional, only if you want it available on Athena/Glue Catalog
    table="my_table",
    partition_cols=["PARTITION_COL_NAME"])

# READ
df = wr.s3.read_parquet(path="s3://...", dataset=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...