通过订阅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}的其他内容}?