Scala 二进制序列化库

Posted

技术标签:

【中文标题】Scala 二进制序列化库【英文标题】:Scala binary serialization library 【发布时间】:2012-09-12 03:26:40 【问题描述】:

我有兴趣就 Scala 数据结构序列化选项征求意见。我想找到足够开发的东西,以允许(如果可能)对 Scala 集合类型进行有效的二进制序列化(即不使用通用 Java 反射 - 我不想序列化集合类的所有部分,包括内部簿记数据),但也允许我为自己的目的/类扩展功能:我非常高兴必须为我们自己的每个类编写序列化代码,但宁愿不必为来自 Scala 的集合执行此操作标准库。在 C++ 中,我从 Boost serialization library 获得了很多这样的功能。

我过去使用过SBinary,它做了一些我想要的,但没有得到明显的主动维护,而且似乎(afaik)没有跟踪已经序列化的对象(例如,用于 DAG 或循环数据结构)。

还有其他针对 Scala 的解决方案吗?如果没有,您对高效的二进制序列化有何建议?

【问题讨论】:

二进制序列化通常是一个难题。由于 Scala 社区规模较小,我怀疑很多人只是使用 Java 库(请参阅 ***.com/questions/239280/…)或自行开发。 【参考方案1】:

可能,如果您只需要序列化数据而不是整个 java 对象,最好的解决方案是:

msgpack(implementation), BSON (implementation), protocol buffers。

我在几个项目中使用msgpackbson,它们工作得很好。我真的推荐msgpack - 具有最有效的二进制表示(这三个)并且完全兼容 JSON。

【讨论】:

【参考方案2】:

Scala 的协议缓冲区编译器:https://github.com/SandroGrzicic/ScalaBuff - 也许这有帮助?

此页面底部还有几个其他链接:http://doc.akka.io/docs/akka/snapshot/scala/serialization.html

【讨论】:

感谢您的建议。如果可能的话,我很想把它全部用一种语言来保存。我目前正在再次使用 SBinary,但感觉多一点爱它可能会更有用。我想我应该把钱放在嘴边,然后分叉...... :-)

以上是关于Scala 二进制序列化库的主要内容,如果未能解决你的问题,请参考以下文章

跨语言(python 到 scala)稀疏数据 ser/deser?

让我们畅通无阻:在 Scala 中使用 GSON 读取 Json

scala处理时间序列数据

Scala PartialFunction ***

Python标准库:pickle

9. 数据保存库