Java 如何在Apache Beam中将文件读取为字节[]?
我们目前正在开发一个基于云数据流的概念验证Apache Beam管道。我们将一些文件(无文本;自定义二进制格式)放入谷歌云存储桶中,并希望将这些文件读取为byte[],然后在流中反序列化它们。但是,我们找不到能够读取非文本文件的光束源。 唯一的想法是扩展Java 如何在Apache Beam中将文件读取为字节[]?,java,google-cloud-platform,google-cloud-dataflow,apache-beam,apache-beam-io,Java,Google Cloud Platform,Google Cloud Dataflow,Apache Beam,Apache Beam Io,我们目前正在开发一个基于云数据流的概念验证Apache Beam管道。我们将一些文件(无文本;自定义二进制格式)放入谷歌云存储桶中,并希望将这些文件读取为byte[],然后在流中反序列化它们。但是,我们找不到能够读取非文本文件的光束源。 唯一的想法是扩展FileBasedSource类,但我们认为应该有一个更简单的解决方案,因为这听起来像是一个非常简单的任务 感谢大家的帮助。这实际上是一个非常有用的功能,目前正在 不管怎样,我都会大致回答,只是为了传播信息 FileBasedSource和Bea
FileBasedSource
类,但我们认为应该有一个更简单的解决方案,因为这听起来像是一个非常简单的任务
感谢大家的帮助。这实际上是一个非常有用的功能,目前正在 不管怎样,我都会大致回答,只是为了传播信息
FileBasedSource
和Beam的源代码抽象的主要目的是提供文件集合的灵活拆分,将其视为一个巨大的数据集,每行一条记录
如果每个文件只有一条记录,则可以将ParDo(DoFn)
中的文件从文件名读取到byte[]
。您将获得拆分的最大好处,因为任何PCollection都支持在元素之间拆分
由于数据流是如何优化的,您可能需要在“ParDo”之前进行重新洗牌
转换。这将确保读取所有文件的并行性与向PCollection注入其名称的上游变换的并行性分离