Flink的操作员状态示例将无法编译(java.lang.Iterable与scala.collection.Iterable)

时间:2018-12-14 14:50:50

标签: scala apache apache-flink stateful

我正在使用apache flink 1.6,并且正在尝试实现一个有状态的处理功能,该功能使用flink的运算符状态,例如:https://ci.apache.org/projects/flink/flink-docs-release-1.6/dev/stream/state/state.html#stateful-source-functions

但是,此页面上的示例不会为我编译:

enter image description here

所以这样做的原因是checkpointedState.get()将返回java.lang.Iterable,而不是scala.collection.Iterable。这是什么原因呢?我在途中某个地方犯了错误,还是示例代码错误?

2 个答案:

答案 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集合,并且该示例工作得很好。