从S3流式传输parquet文件(Python)

3

首先我要说的是,这不是在Spark中运行。

我试图做的是:

  • 从S3中的parquet文件流n条记录
  • 处理
  • 流回到S3中的另一个文件 ...但我只询问第一步。

尝试了各种方法,例如:

from pyarrow import fs
from pyarrow.parquet import ParquetFile

s3 = fs.S3FileSystem(access_key=aws_key, secret_key=aws_secret)
with s3.open_input_stream(filepath) as f:
    print(type(f))  # pyarrow.lib.NativeFile
    parquet_file = ParquetFile(f)
    for i in parquet_file.iter_batches():  # .read_row_groups() would be better
        # process

...但是出现了OSError: only valid on seekable files,不确定如何解决。

如果这是重复的问题,请谅解。我进行了搜索,但没有找到完全符合我要求的答案。

1个回答

4
请使用open_input_file代替open_input_stream进行随机访问读取。对于上下文,Parquet文件的元数据位于文件末尾,因此您需要能够在文件中前后移动。

啊..是的!谢谢你!我甚至没想到去那里看! - Damian Satterthwaite-Phillips

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接