我在SparkStreaming
中有一个具有输入参数的unitTest。
-DStream [字符串]
在代码内部,我想要更新LongAccumulator
。当我执行测试时,我得到一个NullPointerException
因为累加器不存在。有没有办法测试这个?
我的累加器以不同的方式更新。
class Example(conf: Conf) {
var accumulator : LongAccumulator= _
def start(ssc: StreamingContext, ...) = {
accumulator = ssc.sc.longAccumulator("Orpahns")
//I could add accumulator as parameter in execute methods... but runAction doesn't admint two parameters.
execute(...)
}
def execute(stream: DStream[String]): Unit = {
stream.foreachRDD { rdd =>
rdd.foreach { r =>
if (r == "A"){
acc.add(1)
sendKafka(...)
}
}
}
可以测试这种方法吗?
runAction[String](input, service.execute)
当它尝试更新累加器时,它不起作用,因为它没有进入。我可以在execute方法中添加一个新参数,它没关系,但runAction
也没有管理更多参数。