ByteStringCoder用于读取Apache Beam中的数据

时间:2018-06-22 19:42:18

标签: apache dataflow bytestring beam

我正在尝试使用标准TextIO.read()使用Apache Beam 2.4.0版读取数据。数据必须作为ByteString读取。

不幸的是,似乎Apache Beam不像Dataflow那样支持.withCoder()。我似乎找不到引入编码器的替代方法。此外,似乎ByteStringCoder不再包含在Apache Beam的编码器中。

用最新版本的Apache Beam获得数据流.withCoder(ByteStringCoder.of())相同结果的最佳方法是什么?编码器仍然存在于Apache Beam中,因此必须有某种使用方式。

1 个答案:

答案 0 :(得分:1)

postal_address位于ByteStringCoder模块中,因此您需要包括依赖项

https://mvnrepository.com/artifact/org.apache.beam/beam-sdks-java-extensions-protobuf

对于beam-sdks-java-extensions-protobuf:它使用TextIO,因此您可能需要编写自己的BoundedSource / UnboundedSource。 然后使用:

StringUtf8Coder

您可以从当前的pipeline.apply(Read.from(yourCreatedSource))中汲取灵感,在这里您可以可能仅将TextSource的类型String更改为FileBasedSource

https://github.com/apache/beam/blob/master/sdks/java/core/src/main/java/org/apache/beam/sdk/io/TextSource.java