【发布时间】:2019-12-18 13:10:27
【问题描述】:
当我运行下面的代码时。日志打印:
class scala.collection.mutable.ListBuffer 不包含字段 scala$collection$mutable$ListBuffer$$start 的设置器
Class class scala.collection.mutable.ListBuffer 不能用作 POJO 类型,因为并非所有字段都是有效的 POJO 字段,必须作为 GenericType 处理。
代码:
private lazy val schoolDescriptor = new ListStateDescriptor[School]("schoolDescriptor", classOf[School])
context.globalState.getListSate(schoolDescriptor).update(ListBuffer(new School))
类定义:
class School {
var classes: ListBuffer[Class] = ListBuffer()
}
class Class {
var students: ListBuffer[Class] = ListBuffer()
}
class Student {
var name = ""
}
如果POJO有ListBuffer类型字段,而ListBuffer的元素也有ListBuffer类型字段怎么办?
【问题讨论】:
-
您为什么使用
ListBuffer而不是List或Array?它最好用于优化算法,而不是作为公共字段中的一流数据类型。 -
可变性 + 分布式计算 = 灾难 - 在尝试使用它们之前,您可能首先尝试了解这些框架是如何工作的。然后,很清楚为什么这不起作用,为什么即使它起作用也不是一个好主意。
标签: scala apache-flink flink-streaming