我正在使用apache flink 1.6,并且正在尝试实现一个有状态的处理功能,该功能使用flink的运算符状态,例如:https://ci.apache.org/projects/flink/flink-docs-release-1.6/dev/stream/state/state.html#stateful-source-functions
但是,此页面上的示例不会为我编译:
所以这样做的原因是checkpointedState.get()
将返回java.lang.Iterable
,而不是scala.collection.Iterable
。这是什么原因呢?我在途中某个地方犯了错误,还是示例代码错误?
答案 0 :(得分:1)
checkpointedState.get()
将返回java.lang.Iterable,因为Flink检查点的api是使用java而不是scala进行编程的。
看起来该示例是错误的,您可以在JIRA上为社区创建问题。
该解决方案就像user826955所说的那样,您可以使用scala.collection.JavaConversions._
将java.lang.Iterable转换为scala集合。
答案 1 :(得分:0)
好吧,我不知道,是否应该将其清除/理所当然,但是在添加以下内容之后:
import scala.collection.JavaConversions._
我能够将java迭代器用作普通的scala集合,并且该示例工作得很好。