Google cloud dataflow 如何在数据流中将HashMap作为边输入传递
我正在尝试将HashMap作为数据流管道中的边输入传递。我找不到任何例子,除了少数传递字符串、Int或Long的例子。我的代码:Google cloud dataflow 如何在数据流中将HashMap作为边输入传递,google-cloud-dataflow,Google Cloud Dataflow,我正在尝试将HashMap作为数据流管道中的边输入传递。我找不到任何例子,除了少数传递字符串、Int或Long的例子。我的代码: tagList=pipeline.apply(TextIO.Read.named(“tagListTextRead”).from(“gs://mybucket/tag list.json”); PCollection tagMap=tagList .apply(ParDo.named(“allTagsToTagMap”)。of(new Tags.BuildTagLis
tagList=pipeline.apply(TextIO.Read.named(“tagListTextRead”).from(“gs://mybucket/tag list.json”);
PCollection tagMap=tagList
.apply(ParDo.named(“allTagsToTagMap”)。of(new Tags.BuildTagListMapFn());
PCollectionView标记映射视图=
allTags.apply(View.asMap());
第三条语句给出了一个语法错误
应用的方法(pttransform这里有两个不同的答案,具体取决于管道的细节
如果您有一个PCollection
,则可以使用View.asMap()
生成PCollectionView
。无需自己构建映射
如果您有一个带有单个元素的PCollection
,则可以使用View.asSingleton()
进行侧输入
第一种可能是最自然的,您的代码最终看起来像
PCollectionView=管道
.apply(“tagListTextRead”,TextIO.Read.from(“gs://mybucket/tag list.json”))
.apply(“tagsToKv”,新标签.TagToKvFunction())
.apply(“viewTags”,View.asMap())
展开此项以显示中间值的类型:
PCollection标签=
apply(“taglistextread”,TextIO.Read.from(“gs://mybucket/tag list.json”))
PCollection kvs=
rawTags.apply(“tagsToKv”,new Tags.TagToKvFunction())
PCollectionView=
apply(“viewTags”,View.asMap())
非常感谢。这对我来说很有效。我的案例是#2,所以我需要使用asSingleton。