Apache Beam-如何将.getSideInputsMap应用于Google发布/订阅的订阅?

时间:2018-11-26 05:28:21

标签: java google-cloud-platform publish-subscribe apache-beam google-cloud-pubsub

通过订阅Apache Beam中的Google pub / sub,我得到了PCollection

deviceReferenceDataUpdates = pipeLine.begin()
    .apply("subscribe to published data"),
         PubsubIO.readMessages().fromTopic("my_data"))

我想使用该数据来更新其他HashMap类中存在的其他数据(HashMap在与PCollection相同的范围内直接可用)。我正在研究如何使用Apache Beam中的.getSideInputsMap()方法来实现这一目标。以下是如何使用getSideInputsMap()将项目放入到新的HashMap中的示例:

public Map<TupleTag<?>, PValue> getAdditionalInputs() {
  Map<TupleTag<?>, PValue> additionalInputs = new HashMap<>();
  for (Map.Entry<String, SideInput> sideInputEntry : payload.getSideInputsMap().entrySet()) {
try {
  additionalInputs.put(
      new TupleTag<>(sideInputEntry.getKey()),
      rehydratedComponents.getPCollection(
          protoTransform.getInputsOrThrow(sideInputEntry.getKey())));
} catch {

.... error handling

(摘自此处的示例10-https://www.programcreek.com/java-api-examples/?api=org.apache.beam.sdk.transforms.Combine

我不确定如何(或是否)可以使用getSideInputsMap() 更新我的HashMap。它不能作为我的PCollection的直接方法使用。在上面的示例中,它正在应用于payload,并且不确定是否需要生成payload,或者是否应该生成可以调用{{1}的其他内容}?

0 个答案:

没有答案