1

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

谢谢大家帮助。

4

1 回答 1

3

这实际上是一个普遍有用的功能,目前正在拉取请求 #3717中进行审查

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

和 Beam 的源抽象的主要目的FileBasedSource是提供文件集合的灵活拆分,将其视为一个巨大的数据集,每行一条记录。

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

由于 Dataflow 的优化方式,您可能需要Reshuffle在 `ParDo. 这将确保读取所有文件的并行性与将其名称注入 PCollection 的任何上游转换的并行性分离。

于 2017-08-16T15:00:53.240 回答