我想在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,但是我找不到任何具体的东西来解决这个看似微不足道的问题。 :(
答案 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和公共文档没有提到这一点。我们将解决这个问题,感谢您的报告!