我想基于字段的内容动态地将PCollection的不同元素路由到不同的PubSub主题。主题不是持久的,但是假设它们在运行时执行PubSubIO.Write()时存在。因此,Dataflow应该仅在每个消息的基础上在运行时推断出它们的名称。
BigQuery和动态表名称存在此功能:https://beam.apache.org/documentation/sdks/javadoc/2.0.0/org/apache/beam/sdk/io/gcp/bigquery/DynamicDestinations.html
有没有办法与PubSubIO做类似的事情?
也许不是基于消息内容而是基于属性? https://beam.apache.org/documentation/sdks/javadoc/0.6.0/org/apache/beam/sdk/io/PubsubIO.PubsubMessage.html#getAttribute-java.lang.String-
答案 0 :(得分:1)
有没有办法与PubSubIO做类似的事情?
Pub / Sub没有等效Partition
。
您需要提前了解所有发布/订阅主题,并在管道中定义它们。可以基于发布/订阅消息的某个值或属性对管道进行分区,并将其路由到适当的发布/订阅主题。 PubsubMessage
转换将检查class ProxyMiddleware(object):
@classmethod
def process_request(self, request, spider):
request.meta['proxy'] = "http://127.0.0.1:8118"
并确定邮件所属的分区。
参考:Partition
也许不是基于消息内容而是基于属性?
是的,您可以访问邮件的属性。