Apache flink 基于POJO的状态模式演化

Apache flink 基于POJO的状态模式演化,apache-flink,Apache Flink,我将flink 1.11与Scala一起使用,我有一个关于使用POJO的模式演变的问题 在本文中,POJO支持状态模式演化(有一些限制) Scala案例类别是否也被视为POJO并因此得到支持 case class WordCount(word: String, count: Int) 或者我必须写这样的东西: class WordCount(var word: String, var count: Int) { def this() { this(null, -1)

我将flink 1.11与Scala一起使用,我有一个关于使用POJO的模式演变的问题

在本文中,POJO支持状态模式演化(有一些限制)

Scala案例类别是否也被视为POJO并因此得到支持

case class WordCount(word: String, count: Int)
或者我必须写这样的东西:

class WordCount(var word: String, var count: Int) {
    def this() {
      this(null, -1)
    }
}
案例类。特别是,它们不满足:

  • 该类有一个公共的无参数构造函数
  • 类(和所有超类)中的所有非静态、非瞬态字段要么是公共的(和非最终的),要么有一个公共getter和setter方法,该方法遵循getter和setter的JavaBeans命名约定。(afaik案例类在生成的JVM类中具有带有getter的最终字段)
您可以在一个普通的scala类中实现所有必需的东西,但是您的IDE可能无法很好地支持您。一个选项是用Java创建类,让IDE将其绑定并将其转换为scala(或直接使用)


还可以选择使用自定义序列化程序为案例类创建演化支持。这最终将由弗林克提供。(您也可以继续并贡献它)。

我的示例WordCount Scala类完全满足POJO的要求吗?但是,你是对的,为了简单地定义数据结构,我可以在Scala项目中直接使用Java类。