gpt4 book ai didi

python - 如何使用 PyArrow 从 s3 读取定义的 Parquet 文件列表?

转载 作者:行者123 更新时间:2023-12-01 08:50:58 53 4
gpt4 key购买 nike

我需要从存储在 s3 中的 Parquet 文件将数据增量加载到 Pandas,我正在尝试使用 PyArrow 来实现此目的,但没有任何运气。

将 Parquet 文件的整个目录写入 Pandas 效果很好:

import s3fs
import pyarrow.parquet as pq
import pandas as pd

fs = s3fs.S3FileSystem(mykey,mysecret)
p_dataset = pq.ParquetDataset('s3://mys3bucket/directory', filesystem=fs)

df = p_dataset.read().to_pandas()

但是当我尝试加载单个 Parquet 文件时,出现错误:

fs = s3fs.S3FileSystem(mykey,mysecret)
p_dataset = pq.ParquetDataset('s3://mys3bucket/directory/1_0_00000000000000014012'
, filesystem=fs)

df = p_dataset.read().to_pandas()

抛出错误:

    ---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-179-3d01b32c60f7> in <module>()
15 p_dataset = pq.ParquetDataset(
16 's3://mys3bucket/directory/1_0_00000000000000014012',
---> 17 filesystem=fs)
18
19 table2.to_pandas()

C:\User\Anaconda3\lib\site-packages\pyarrow\parquet.py in __init__(self, path_or_paths, filesystem, schema, metadata, split_row_groups, validate_schema, filters, metadata_nthreads)
880
881 if validate_schema:
--> 882 self.validate_schemas()
883
884 if filters is not None:

C:\User\Anaconda3\lib\site-packages\pyarrow\parquet.py in validate_schemas(self)
893 self.schema = self.common_metadata.schema
894 else:
--> 895 self.schema = self.pieces[0].get_metadata(open_file).schema
896 elif self.schema is None:
897 self.schema = self.metadata.schema

IndexError: list index out of range

非常感谢有关此错误的任何帮助。

理想情况下,我需要将添加到 s3 的所有新数据(自上次运行此脚本以来添加)附加到 Pandas 数据帧,因此我认为将文件名列表传递给 ParquetDataset。有更好的方法来实现这一目标吗?谢谢

最佳答案

您想要使用pq.read_table(传递文件路径或文件句柄)而不是pq.ParquetDataset(传递目录)。 HTH

关于python - 如何使用 PyArrow 从 s3 读取定义的 Parquet 文件列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53132693/

53 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com