PCollection Sideinput:将单个String作为SideInput提供给PCollection

时间:2015-09-19 03:13:55

标签: google-cloud-platform google-cloud-dataflow

我想在PCollection上提供一个ParDo,并将一个String作为SideInput。我尝试了以下方法:

PCollection<String> sideView = p.apply(Create.of(sideName).withCoder(StringUtf8Coder.of()));
final PCollectionView<String> filterObject = sideView.apply(View.asSingleton());

但是我遇到了编译错误:

no suitable method found for apply(View.asSingleton())

有人可以告诉我我错过了什么吗?我经常探索SDK javadoc,但是我找不到任何具体的东西来解决这个看似微不足道的问题。 :(

1 个答案:

答案 0 :(得分:2)

好像你的错误会是这样的:

The method apply(PTransform<? super PCollection<String>,OutputT>)
in the type PCollection<String> is not applicable for the arguments
(View.AsSingleton<Object>)

这是因为在存在泛型的情况下Java编译器中的类型推断并不完美,在这种情况下需要添加一个显式类型参数:

final PCollectionView<String> filterObject =
    sideView.apply(View.<String>asSingleton());

实际上,Dataflow SDK示例中View.asSingleton的用法指定了此参数:请参阅github search

然而,在写作时,我们的javadoc和公共文档没有提到这一点。我们将解决这个问题,感谢您的报告!