0

我们目前正在开展关于云数据流的Apache Beam Pipeline概念验证。我们将一些文件(无文本;自定义二进制格式)放入Google Cloud Buckets中,并希望将这些文件作为byte []读取,并在流程中反序列化它们。但是,我们无法找到能够读取非文本文件的Beam源文件。 唯一的想法是扩展FileBasedSource类,但我们认为应该有一个更简单的解决方案,因为这听起来像一个非常简单的任务。如何在Apache Beam中将文件读取为byte []?

谢谢你们的帮助。

回答

1

这其实是一个普遍实用的功能,目前正在审查中pull request #3717

我一般会回答无论如何,只是传播信息。

FileBasedSource以及Beam的源代码抽象的主要目的是提供文件集合的灵活分割,将其视为一个庞大的数据集,每行记录一条记录。

如果每个文件只有一条记录,那么您可以从文件名中读取ParDo(DoFn)中的文件到byte[]。您将获得分割的最大好处,因为任何PCollection都支持元素之间的分割。

由于数据流如何优化,您可能需要在ParDo之前进行Reshuffle转换。这将确保读取所有文件的并行性与任何上游转换将其名称注入PCollection的并行性相分离。

相关问题