Я пытаюсь познакомиться с семантикой Flink после того, как начал с Spark. Я хотел бы записать DataSet[IndexNode]
в постоянное хранилище в HDFS, чтобы позже его мог прочитать другой процесс. Spark имеет простой ObjectFile
API, который предоставляет такую функциональность, но я не могу найти подобную опцию во Flink.
case class IndexNode(vec: Vector[IndexNode],
id: Int) extends Serializable {
// Getters and setters etc. here
}
Встроенные приемники стремятся сериализовать экземпляр на основе метода toString
, который здесь не подходит из-за вложенной структуры класса. Я полагаю, что решение состоит в том, чтобы использовать FileOutputFormat
и обеспечить перевод экземпляров в поток байтов. Однако я не уверен, как сериализовать вектор, который имеет произвольную длину и может иметь многоуровневую глубину.