我们目前正在研究 Cloud Dataflow 上的 Apache Beam Pipeline 概念验证。我们将一些文件(无文本;自定义二进制格式)放入 Google Cloud Buckets,并希望将这些文件读取为 byte[] 并在流程中反序列化它们。但是,我们找不到能够读取非文本文件的 Beam 源。唯一的想法是扩展FileBasedSource
类,但我们相信应该有一个更简单的解决方案,因为这听起来像是一个非常简单的任务。
谢谢大家帮助。
我们目前正在研究 Cloud Dataflow 上的 Apache Beam Pipeline 概念验证。我们将一些文件(无文本;自定义二进制格式)放入 Google Cloud Buckets,并希望将这些文件读取为 byte[] 并在流程中反序列化它们。但是,我们找不到能够读取非文本文件的 Beam 源。唯一的想法是扩展FileBasedSource
类,但我们相信应该有一个更简单的解决方案,因为这听起来像是一个非常简单的任务。
谢谢大家帮助。
这实际上是一个普遍有用的功能,目前正在拉取请求 #3717中进行审查
无论如何,我会一般性地回答,只是为了传播信息。
和 Beam 的源抽象的主要目的FileBasedSource
是提供文件集合的灵活拆分,将其视为一个巨大的数据集,每行一条记录。
如果每个文件只有一条记录,则可以将文件ParDo(DoFn)
从文件名读取到byte[]
. 您将获得拆分的最大好处,因为任何 PCollection 都支持元素之间的拆分。
由于 Dataflow 的优化方式,您可能需要Reshuffle
在 `ParDo. 这将确保读取所有文件的并行性与将其名称注入 PCollection 的任何上游转换的并行性分离。