h2o - 为什么 ModelDescriptor 和 ModelDescriptorBuilder 不可序列化?
问题描述
在迁移到 H2O SparklingWater 3.32 时,我在 hex.genmodel.MojoModel 对象的序列化过程中遇到错误。具体来说,MojoModel 序列化通常会因与 _modelDescriptor 相关的 NotSerializableException 而失败:
引起:java.io.NotSerializableException: hex.genmodel.descriptor.ModelDescriptorBuilder$1
- 字段(类“hex.genmodel.MojoModel”,名称:“_modelDescriptor”,类型:“interface hex.genmodel.descriptor.ModelDescriptor”)
- 对象(类“hex.genmodel.algos.gbm.GbmMojoModel”,...
我了解 MojoModels 通常作为 MOJO 文件保存和重新加载。我们确实使用这些文件进行长期存储。但是,对于短期缓存,我们的代码依赖于序列化。
MojoModel 实现了可序列化。 http://docs.h2o.ai/h2o/latest-stable/h2o-genmodel/javadoc/serialized-form.html#hex.genmodel.MojoModel
但是,ModelDescriptor 和 ModelDescriptorBuilder 不实现 Serializable。事实上,它最初似乎是这样打算的,但未使用的导入在 2019 年 6 月 17 日的更新中被删除:
似乎 MojoModel 中的所有序列化变量都应该实现 Serializable。
我确实理解我们的模型定义的某些部分可能会破坏序列化过程,我们正在继续调查。如果可能,我们将尝试提取一个最小示例。然而,我想在我们继续调查这个问题时提出这个问题。
解决方案
推荐阅读
- java - Spring Kafka 中的延迟 ACK
- php - 重定向回来时,Laravel Socialite 403 Forbidden 错误
- java - 构建战争时删除jar文件的Maven插件
- javascript - javascript window.open 无限加载
- api - 在写入和读取 tfrecord 文件之间得到不匹配的结果
- r - DBI::dbSendQuery 失败并出现 RJDBC::JDBC for SQL SERVER
- sql-server - 从 HA 中删除多个数据库的脚本
- twilio - Twilio 自动驾驶仪没有说出它应该说的内容
- javascript - 将array1的每个元素的属性复制到array2中
- regex - 使用 sed 查找给定正则表达式的值