【问题标题】:Flink's operator state example won't compile (java.lang.Iterable vs. scala.collection.Iterable)Flink 的 operator state 示例不会编译(java.lang.Iterable vs. scala.collection.Iterable)
【发布时间】:2019-05-15 20:34:35
【问题描述】:

我正在使用 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。这是什么原因?是我在途中的某个地方出错了,还是示例代码有误?

【问题讨论】:

    标签: scala apache-flink stateful


    【解决方案1】:

    好的,我不知道,如果这应该是明确的/被视为理所当然,但是在添加这个之后:

    import scala.collection.JavaConversions._
    

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

    【讨论】:

      【解决方案2】:

      checkpointedState.get() 会返回 java.lang.Iterable 因为 Flink checkpointing 的 api 是用 java 而不是 scala 编写的。 看起来这个例子是错误的,你可以在 JIRA 上为社区创建一个问题。

      解决方法就像user826955说的,可以使用scala.collection.JavaConversions._将java.lang.Iterable转成scala集合。

      【讨论】:

      • user826955 是我 :)
      猜你喜欢
      • 1970-01-01
      • 2018-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-20
      相关资源
      最近更新 更多