gpt4 book ai didi

scala - 使用 json4s 解析 JSON 时引发不可序列化异常

转载 作者:行者123 更新时间:2023-12-02 20:02:18 24 4
gpt4 key购买 nike

我在尝试在 Spark 作业中解析 json 时遇到了问题。我使用的是 spark 1.1.0json4sCassandra Spark Connector。抛出的异常是:

java.io.NotSerializedException:org.json4s.DefaultFormats

检查 DefaultFormats 伴随对象,并使用此 stack问题,很明显 DefaultFormats 无法序列化。现在的问题是该怎么办。

我可以看到这个ticket显然已经在 Spark 代码库中通过添加关键字 transient 解决了这个问题,但我不确定如何或在哪里将其应用到我的案例中。解决方案是否仅在执行器上实例化 DefaultFormats 类,以避免一起序列化?人们正在使用另一个用于 scala/spark 的 JSON 解析库吗?我最初尝试单独使用 jackson,但遇到了一些无法轻松解决的注释错误,而 json4s 可以开箱即用。这是我的代码:

import org.json4s._
import org.json4s.jackson.JsonMethods._
implicit val formats = DefaultFormats

val count = rdd.map(r => checkUa(r._2, r._1)).reduce((x, y) => x + y)

我在 checkUa 函数中进行 json 解析。我尝试让计数变得懒惰,希望它能以某种方式延迟执行,但没有效果。也许移动 checkUA 中的隐式 val ?非常感谢任何建议。

最佳答案

这已经在 an open ticket with json4s 中得到了回答。解决方法是将隐式声明放在函数内部

val count = rdd
.map(r => {implicit val formats = DefaultFormats; checkUa(r._2, r._1)})
.reduce((x, y) => x + y)

关于scala - 使用 json4s 解析 JSON 时引发不可序列化异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29662120/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com