我正在尝试使用标准TextIO.read()
使用Apache Beam 2.4.0版读取数据。数据必须作为ByteString读取。
不幸的是,似乎Apache Beam不像Dataflow那样支持.withCoder()
。我似乎找不到引入编码器的替代方法。此外,似乎ByteStringCoder
不再包含在Apache Beam的编码器中。
用最新版本的Apache Beam获得数据流.withCoder(ByteStringCoder.of())
相同结果的最佳方法是什么?编码器仍然存在于Apache Beam中,因此必须有某种使用方式。
答案 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
。