Scalatest 和 Spark 给出“java.io.NotSerializedException:org.scalatest.Assertions$AssertionsHelper”

2024-01-19

我正在借助“”测试 Spark Streaming 应用程序com.holdenkarau.spark-测试基地" and 分级测试.

import com.holdenkarau.spark.testing.StreamingSuiteBase
import org.apache.spark.rdd.RDD
import org.scalatest.{ BeforeAndAfter, FunSuite }

class Test extends FunSuite with BeforeAndAfter with StreamingSuiteBase {

  var delim: String = ","

  before {
    System.clearProperty("spark.driver.port")
   }

  test(“This Fails“) {

    val source = scala.io.Source.fromURL(getClass.getResource(“/some_logs.csv"))
    val input = source.getLines.toList

    val rowRDDOut = Calculator.do(sc.parallelize(input))   //Returns DataFrame

    val report: RDD[String] = rowRDDOut.map(row => new String(row.getAs[String](0) + delim + row.getAs[String](1))

    source.close
  }
}

我收到字段 ' 的序列化异常delim':

org.apache.spark.SparkException: Task not serializable
[info]   at org.apache.spark.util.ClosureCleaner$.ensureSerializable(ClosureCleaner.scala:304)
[info]   at org.apache.spark.util.ClosureCleaner$.org$apache$spark$util$ClosureCleaner$$clean(ClosureCleaner.scala:294)
[info]   at org.apache.spark.util.ClosureCleaner$.clean(ClosureCleaner.scala:122)
[info]   at org.apache.spark.SparkContext.clean(SparkContext.scala:2055)
[info]   at org.apache.spark.rdd.RDD$$anonfun$map$1.apply(RDD.scala:324)
[info]   at org.apache.spark.rdd.RDD$$anonfun$map$1.apply(RDD.scala:323)
[info]   at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:150)
[info]   at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:111)
[info]   at org.apache.spark.rdd.RDD.withScope(RDD.scala:316)
[info]   at org.apache.spark.rdd.RDD.map(RDD.scala:323)
[info]   ...
[info]   Cause: java.io.NotSerializableException: org.scalatest.Assertions$AssertionsHelper
[info] Serialization stack:
[info]  - object not serializable (class: org.scalatest.Assertions$AssertionsHelper, value: org.scalatest.Assertions$AssertionsHelper@78b339fa)
[info]  - field (class: org.scalatest.FunSuite, name: assertionsHelper, type: class org.scalatest.Assertions$AssertionsHelper)

如果我用字符串值替换“delim”,它就可以正常工作。

val report: RDD[String] = rowRDDOut.map(row => new String(row.getAs[String](0) + “,” + row.getAs[String](1))

第一版和第二版有什么区别?

提前致谢!


问题不在于类型delim(字符串)它是delim本身。

尽量不要在你的外部定义变量test()方法。如果你定义delm在你的里面test它应该有效。

test(“This Fails“) {
   val delim = ","
   ...
}

现在,你可能会问为什么?好吧,当你参考delim从外部作用域来看,Scala 会尝试将封闭对象组合在一起class Test。该对象包含对org.scalatest.Assertions$AssertionsHelper它不是可序列化的(请参阅您的堆栈跟踪)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Scalatest 和 Spark 给出“java.io.NotSerializedException:org.scalatest.Assertions$AssertionsHelper” 的相关文章

随机推荐

  • 什么时候适合使用引用变量?为什么?您能解释一下实际的语法和位置吗? [复制]

    这个问题在这里已经有答案了 我是 C 的新手 我们最近开始在课堂上探索参考变量 我对它们感到非常困惑 不一定是如何做它们 因为我知道它们会切换变量值 但更多的是沿着为什么开发人员想要做这样的事情 他们完成了什么 它们节省内存吗 他们是否避免
  • 如何在从 v$sql 接收到的 Oracle 查询中查找参数?

    我使用查询 select LAST LOAD TIME ELAPSED TIME MODULE SQL TEXT elasped from v sql WHERE MODULE JDBC Thin Client ORDER BY LAST
  • 将十进制小时转换为小时、分钟和秒

    xslt 1 0 中是否有更优雅的解决方案 我知道 xslt 2 0 有内置函数 我正在获取一个以十进制小时表示的数字 需要将其表示为 HH MM SS 目前我有以下功能正常的
  • 如何使用 VB6 的 Web 服务?

    我需要从 VB6 程序使用外部 Web 服务 如果可能的话 我希望能够在没有 SOAP 工具包的情况下部署我的程序 但这不是必需的 我没有网络服务源 也没有创建它 这是供应商提供的服务 那么 除了 SOAP 工具包之外 使用 VB6 的 W
  • 扩展 MVC3 razor Html.LabelFor 添加 css 类

    我正在尝试将 css 类添加到 EditorTemplate 上的 Html LabelFor Html LabelFor model gt model Name new class myLabel 我的期望例如 label 应该选择 cs
  • BigQuery 写入时数据流作业失败并出现后端错误

    我的工作因最终导入 BigQuery 相关的几个不同错误而失败 我已经运行了 5 次 每次都失败 尽管错误消息有时会有所不同 当我在本地针对 SQLite 数据库运行该工作时 该工作运行良好 因此我认为问题出在 Google 后端 一条错误
  • 使用 SSL 的 wcf net.tcp

    有人有在 WCF 中使用 SSL 和 net tcp 绑定的经验吗 我读过这是可能的 但没有找到有关如何实现它的良好信息 我很想听听任何了解或实施过这一点的人的意见 提前致谢 看看这个链接里的内容 http msdn microsoft c
  • 通过传递带有要选择的列名称的有序向量,对 dplyr 中的列进行动态排序

    我使用下面的代码生成一个简单的汇总表 Data data mtcars Lib require dplyr Summary mt sum lt mtcars gt group by am gt summarise each funs min
  • php 回显尖括号

    我想在页面上显示文本 文本应该如下所示
  • CASE 语句未正确定义列雪花

    我有一个以下格式的查询 用于执行COALESCE以及使用定义一个新列CASE陈述 SELECT COALESCE mm1 missing AS mm1 COALESCE mm2 missing AS mm2 CASE WHEN mm1 fa
  • HTML::PullParser 随机分割文本元素

    我正在使用 Perl 模块HTML PullParser 我注意到它有时会随机分割文本元素 据我所知 例如 如果我有一个 html 文件test html与内容 font style font family none size 2 THE
  • 确定掷骰子中数字出现的频率

    对于游戏 我试图确定在给定的骰子数量下特定的 出现的频率 我知道 这个问题看起来很奇怪 让我尝试用实际数字来解释它 因此 对于 1 个骰子 每个数字的频率将相同 1 6 将出现相同的次数 现在对于 2 个骰子 情况会变得不同 我想 5 6
  • 无法为 Facebook 测试用户添加当前城市

    我正在开发基于位置的功能 因此在测试应用程序下创建了一些 Facebook 测试帐户 我试图为所有测试用户添加当前城市 手动 但 Facebook 在输入城市时抛出以下错误 您请求的内容现在无法显示 可能是 暂时不可用 您点击的链接可能已过
  • Linux 下的 Ruby 不区分大小写地打开文件

    有没有办法在Linux下的Ruby中不区分大小写地打开文件 例如 给定字符串foo txt 我可以打开该文件吗FOO txt 一种可能的方法是读取目录中的所有文件名并手动搜索所需文件的列表 但我正在寻找一种更直接的方法 一种方法是编写一个小
  • 将 EAR 模块转为 OSGI 包的正确方法

    有必要将 EAR 的一部分 即战争 转变成 OSGI 包并保留其互操作性 Glassfish 3 0 1 已经有了osgi web container模块 我成功部署了独立的 OSGI war 但如果是前企业战争 我觉得有点困难 我该如何处
  • solr 地理层次结构

    我一直在试图找出一种在 solr 中实现层次结构分面的方法 但不知道在我的情况下如何做到这一点 我读过几篇关于在 solr 中进行层次结构的文章以及补丁 64 和 792 中的解决方案 我遇到的主要问题是我的实体可以属于层次结构的多个分支
  • R ggplot2 - 简单绘图 - 无法指定对数轴限制

    我正在尝试在 R 中的 ggplot2 中创建一个简单的密度图 这是我的代码 效果很好 d lt ggplot result aes x result baseMeanA d geom density colour darkgreen si
  • 如何将 java.time.Instant 格式化为本地时区的字符串?

    如何格式化javax time Instant http threeten sourceforge net apidocs 2011 01 07 javax time Instant html作为本地时区的字符串 以下是本地翻译的Insta
  • RadDateTimePicker + 用于数据输入的掩码

    要求 允许用户以 格式输入日期 同时还可以从 DatePicker 中选择日期 假设输入的所有年份都是 2000 年之后 例如 用户输入 050513 它会变成 5 5 2013年 或者 如果他们从 DatePicker 中选择它 则提供相
  • Scalatest 和 Spark 给出“java.io.NotSerializedException:org.scalatest.Assertions$AssertionsHelper”

    我正在借助 测试 Spark Streaming 应用程序com holdenkarau spark 测试基地 and 分级测试 import com holdenkarau spark testing StreamingSuiteBase