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

2023-11-24

我在尝试在 Spark 作业中解析 json 时遇到了问题。我在用着spark 1.1.0, json4s,以及Cassandra Spark Connector。抛出的异常是:

java.io.NotSerializableException: org.json4s.DefaultFormats

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

我可以看到这个ticket显然已经在 Spark 代码库中通过添加关键字瞬态解决了这个问题,但我不确定如何或在哪里将其应用到我的案例中。解决方案是否仅在执行器上实例化 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 ?非常感谢任何建议。


这已经在带有 json4s 的开放票证。解决方法是将implicit函数内部的声明

val count = rdd
               .map(r => {implicit val formats = DefaultFormats; checkUa(r._2, r._1)})
               .reduce((x, y) => x + y) 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 json4s 解析 JSON 时引发不可序列化异常 的相关文章

  • Spark 在执行 jdbc 保存时给出空指针异常

    您好 当我执行以下代码行时 我得到以下堆栈跟踪 transactionDF write format jdbc option url SqlServerUri option driver driver option dbtable full
  • 有没有好的 Clojure 基准测试?

    Edit Clojure 基准测试已达到基准游戏 http benchmarksgame alioth debian org u64q clojure html 我已经制作了这个问题社区维基并邀请其他人保持更新 有人知道 Clojure 性
  • scala 中的模拟案例类:Mockito

    在我的游戏应用程序中 我打算模拟一个案例类 我可以这样做 但它创建了一个所有成员变量都为空的对象 有没有办法创建案例类的模拟对象 以便该对象可以初始化一些成员 case class User name String address Stri
  • 为什么我可以使用 Scala REPL 中的 Java 库,但不能使用脚本中的 Java 库?

    我正在开发一个使用 Joda Time 的 Scala 脚本 直到今天 这一切都运行良好 不知怎的 有些东西发生了变化 它不再起作用了 这有效 scala cp lib Welcome to Scala version 2 9 1 fina
  • 无法启动 Spark-Shell

    我使用的是 Spark 1 4 1 我可以毫无问题地使用spark submit 但当我跑的时候 spark bin spark shell 我收到以下错误 我已经配置了SPARK HOME and JAVA HOME 不过 Spark 1
  • 序列化匿名类型

    我想将匿名类型变量转换为 byte 我该怎么做 我尝试过的 byte result var my new Test a1 Value 0 BinaryFormatter bf new BinaryFormatter using Memory
  • 在 Play 2 模板中格式化双精度的正确方法是什么

    这是我的 Play 2 模板的缩写代码 variable com mypackage Variable div class statsbody div class statsform div div
  • 在 scala 中保留推导的更高类型

    我有一个高阶类型 并致力于用它构建一些 DSL 我正在寻找一种方法来定义可以接受类型而无需显式指定此类型的函数 自我描述示例 class Wrap T val data T class DSL def doSomething T x Wra
  • 内存泄漏在哪里?

    我使用 InetAddress 来解析 IP 地址 但现在如果 IP 不可用 则需要存储主机名 所以我介绍了一个班级Host case class Host name String ip InetAddress import Host ad
  • 手动排除sbt中的一些测试类

    我通常在 CI 中执行以下命令 清理更新编译测试发布 但是 我想从 sbt 命令行中排除 1 个 或几个 测试类 我怎样才能做到这一点 我不想更改我的代码以使用忽略等 两种可能的选择 test only See http www scala
  • 在 Spark 中将流式 XML 转换为 JSON

    我是 Spark 新手 正在开发一个简单的应用程序 将从 Kafka 接收的 XML 流转换为 JSON 格式 Using 火花2 4 5 斯卡拉 2 11 12 在我的用例中 kafka 流采用 xml 格式 以下是我尝试过的代码 val
  • akka http配置中的idle-timeout和request timeout有什么区别?

    我查阅了文档并发现了这些 空闲连接自动关闭的时间 设置infinite完全禁用空闲连接超时 空闲超时 10 秒 Defines the default time period within which the application has
  • Scala 条件列表构造

    我正在使用 Scala 2 9 2 并且想根据某些条件构建一个列表 考虑以下情况 其中 cond 是采用谓词 p 和类型 T 的值 在本例中为 t3 的某个函数 t1 t2 cond p t3 t4 我想要的行为如下 如果 p 为真 则应给
  • Scala 中的 Apply 和 lambda

    我有下面的代码 scala gt val builder new StringBuilder foo bar baz builder StringBuilder foo bar baz scala gt 0 until 5 foreach
  • createOrReplaceTempView 在 Spark 中如何工作?

    我是 Spark 和 Spark SQL 的新手 如何createOrReplaceTempView在 Spark 工作 如果我们注册一个RDD对象作为表 Spark 会将所有数据保留在内存中吗 createOrReplaceTempVie
  • Spark Streaming 中是否需要检查点

    我注意到 Spark 流示例也有检查点代码 我的问题是检查点有多重要 如果是为了容错 那么在此类流应用程序中发生故障的频率是多少 这一切都取决于您的用例 假设您正在运行一个流作业 它仅从 Kafka 读取数据并计算记录数 如果您的应用程序在
  • Scala 警告、IntelliJ 和编译器标志

    我目前正在试用 IntelliJ Scala 插件 有件事让我有点烦恼 编译时我收到 3 个警告 Warning scala Recompiling 4 files Warning scala Warning scala there wer
  • Rails 2.3.14:如何序列化 ActionController::Request 对象?

    我需要编写一些根据 Rails 2 3 14 控制器收到的请求对象类型执行操作的方法 但是 我不想启动整个应用程序 甚至不想启动控制器 我只想拥有这样一个对象的编组副本 以便我可以在 Rails 环境之外使用 不幸的是 ActionCont
  • 如何向数据框spark添加标题和列?

    我有一个数据框 我想在其中添加标题和第一列 手动 这是数据框 import org apache spark sql SparkSession val spark SparkSession builder master local appN
  • Java 中序列化的目的是什么?

    我读过很多关于序列化的文章 以及它如何如此美好和伟大 但没有一个论点足够令人信服 我想知道是否有人能真正告诉我通过序列化一个类我们真正可以实现什么 让我们先定义序列化 然后我们才能讨论它为什么如此有用 序列化只是将现有对象转换为字节数组 该

随机推荐