微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有没有一种方法可以完全交换使用Apache Beam处理序列化的方式?

如何解决有没有一种方法可以完全交换使用Apache Beam处理序列化的方式?

我将Kotlin与Apache Beam一起使用,并且我有一组DTO相互引用,并且对于使用Kotlinx Serialization的任何编码器而言,它们都非常适合序列化。当我尝试将它们与Beam一起使用时,最终会遇到问题,因为它正在寻找所有对象,类型参数和嵌套对象来实现Java Serializable接口。问题是,我无法用所有对象类型来控制它,因为某些对象来自第三方库。

我已经实现了自己的使用Kotlinx序列化的CustomCoder<T>类型,但是我遇到了自定义编码器无法序列化的问题,特别是由于Kotlinx序列化插件生成的Companion对象序列化器未序列化。由于它是编译时生成代码,因此我实际上没有控制权,也无法将其标记@Transient。我尝试在编码器上实现Externalizable,但当我为未实现T或没有嵌套类型参数的Serializable传递类型参数时,它就失败了。 / p>

此外,Kotlinx序列化还不错,因为它不使用反射。如果我可以以某种方式换掉序列化机制,而不必完全依靠标准Java序列化方法,或者以某种方式实现Externalizable,而这只是我自己的方式,那将使我当前的很多头痛都消失了。序列化机制,并忽略type参数。有什么解决办法吗?我不介意它有多骇人,即使解决方案涉及弄乱Gradle构建配置中的内容以覆盖某些内容。我只是不确定如何去做,所以任何指针都会有很大帮助!

或者,如果我放弃Kotlinx序列化,是否有任何简单的解决方案可以使任意复杂的数据类型序列化仅与Java一起使用,甚至使用反射,而无需进行大量的手工操作来处理编码和解码?我觉得也许我只是缺少一些明显的东西。这是我与Apache Beam的第一个项目,但是到目前为止,谷歌几乎没有帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。