flink的操作符状态示例无法编译(java.lang.iterable与scala.collection.iterable)

nwsw7zdq  于 2021-06-21  发布在  Flink
关注(0)|答案(2)|浏览(337)

我正在使用ApacheFlink 1.6,并尝试实现一个有状态处理函数,它使用flink的运算符状态,如下所述:https://ci.apache.org/projects/flink/flink-docs-release-1.6/dev/stream/state/state.html#stateful-源函数
但是,本页上的示例不会为我编译:

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

iklwldmw

iklwldmw1#

checkpointedState.get() 将返回java.lang.iterable,因为flink检查点的api是用java而不是scala编程的。看起来这个例子是错误的,你可以为社区创建一个关于jira的问题。
解决方案就像user826955所说的,您可以使用 scala.collection.JavaConversions._ 将java.lang.iterable转换为scala集合。

ergxz8rk

ergxz8rk2#

好吧,我不知道,这是否应该是明确的/理所当然的,但是在添加这个之后:

import scala.collection.JavaConversions._

我能够将java迭代器用作普通的scala集合,并且该示例运行良好。

相关问题