Apache Beam中压缩文件的自定义FileBasedSource

2024-06-26 14:34:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用apachebeam在GCS上处理大约10000个小XML文件

我目前的方法是编写一个自定义的FileBasedSource,它将XML解析为一个PCollection元素。我还想使用内置的glob和GCS IO

它似乎适用于常规文件,但对于压缩文件,file.read方法需要一个num_bytes参数。处理此文件的正确方法是什么

class CustomSource(FileBasedSource):
    def __init__(self, file_pattern):
        super().__init__(file_pattern, splittable=False)
    def read_records(file_name, range_tracker):
        f = self.open_file(file_name)
        yield f.read()    # throws missing argument error

其中file_pattern='gs://my-bucket/*.gz'

我应该如何选择num_bytes?它是否取决于转轮上可用的预期RAM

编辑除了解析许多小的单个文件,然后进行连接之外,是否有一种更好的选择


Tags: 文件方法nameselfreadbytesinitdef