【问题标题】:how to test function in spark如何在火花中测试功能
【发布时间】:2017-02-02 06:08:18
【问题描述】:

假设我有一个 spark rdd 并且需要处理它。

rdd.mapPartitionsWithIndex{(index, iter)=>
  def someFunc(){}
  def anotherFunc(){}

  val x = someFunc(iter)
  val y = anotherFunc(index, iter, x)
  x zip y
}

我在 mapParititions 中定义了 someFunc 和 anotherFunc,因为我不想在驱动程序中定义它们,然后将它们序列化给工作人员。它可以工作,但我无法测试它,因为它是一个嵌套函数。如何测试这个?需要为这些功能编写测试用例。目前我可以序列化它。但是如果函数不可序列化并且不能从驱动程序发送到工作程序怎么办?

【问题讨论】:

    标签: scala apache-spark


    【解决方案1】:

    整个 lambda 将被序列化,内部函数也是如此;)

    你可以:

    • 创建辅助对象来保存这些函数并为此对象创建测试
    • 创建静态嵌套类

    记住:

    1. @transient标记所有不可序列化的字段
    2. implements Serializable标记你的对象/类

    您还可以创建一个集成测试,它将创建 Spark 上下文并在本地模式下运行计算

    可以找到更多信息,即here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-10
      • 2012-05-31
      相关资源
      最近更新 更多