Google Cloud Dataflow - 将pubsub消息作为字符串

时间:2018-01-15 13:48:17

标签: google-cloud-dataflow google-cloud-pubsub

有没有办法在Java代码中从pubsub接收消息,然后将该代码转换为某种类型的字符串进行解析,然后可以将其用作代码中的输入变量?

我已经使用PubSubIO检索了pubsub消息,但我只知道如何将其作为字符串的PCollection或使用视图作为侧输入,但是无论如何我无法找到从这些数据中获取实际字符串以供使用Java代码。

有人能指出我正确的方向吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

如果我正确理解你的问题,这是不可能的。无法使用PCollection定义之外的Pipeline元素的值。直观地说,在编写Java代码时可能会出现这种情况(可能没有编译错误),但这并不是Apache Beam实际工作的方式。我想你在执行期间会遇到某种运行时/序列化错误。

据推测,您希望使用元素的某个值来更改Pipeline。在这种情况下,您需要提前知道所有可能的值,以便分区/构造Pipeline;价值需要预先确定。

答案 1 :(得分:2)

也许我误解了,但究竟是什么问题?是的,PubsubIO.readStrings()将生成一个字符串的PColleciton,而不是字符串本身,但下一个将链接到这个字符串的转换将接收这些字符串,因此您可以使用ProcessContext轻松地将JAVA代码应用于每个字符串。该变换的@ProcessElement函数中的element()。这就是你所做的所有分裂/等等。这就是你追求的目标吗?