Модульное тестирование искровой потоковой передачи

2

У меня есть эта строка в scala:

class SparkStreamingService(...){
 val lines: org.apache.spark.streaming.dstream.InputDStream[(String, String)] = KafkaUtils.createDirectStream[String, String, StringDecoder, StringDecoder](
    ssc, kafkaParams, topics)
  lines.foreachRDD { rdd =>
    val df = cassandraSQLContext.read.json(rdd.map(x => x._2))
    if (!df.rdd.isEmpty()) {
      processDataFrameToLoadService(df)
    }
    else{
      throw new BacSparkStreamingExpception("The dataframe created from kafka message is empty")
    }
  }

  ssc.start()
  ssc.awaitTermination()
}

Есть ли способ издеваться над InputDStream в Java? Как я могу пройти тестирование устройства? В основном я хочу издеваться над cassandraSQLContext.read.json(rdd.map(x => x._2)), а затем возвращать пользовательский DF (что я могу сделать), но как мне пройти первые три строки? В настоящее время он просто опросает сообщения, и тест никогда не заканчивается.

Теги:
unit-testing
apache-spark

1 ответ

0

Истинное модульное тестирование с любым контекстом Spark практически невозможно. Я думаю, вы должны вместо этого интегрировать тест со значениями в памяти:

val sparkContext: SparkContext = ...
val data: Seq[(String, String)] = Seq(("a", "1"), ("b", "2"), ("c", "3"))
val rdd: RDD[(String, String)] = sparkContext.parallelize(data)
val strings: mutable.Queue[RDD[(String, String)]] = mutable.Queue.empty[RDD[(String, String)]]
val streamingContext = new StreamingContext(sparkContext, Seconds(1))
val dStream: InputDStream = streamingContext.queueStream(strings)
strings += rdd

... и оттуда.

Вы также хотите инициализировать как можно больше материалов Spark в какой-либо "настройке" или "до" функциональности, предоставляемой вашей тестовой платформой, и аналогичным образом разобрать ее в "срыв" или "после".

Хотя это не строго модульные тесты, эти тесты помогут вам чувствовать уверенность в том, что ваш код обработки может обрабатывать потоки, и если что-то ухудшится, когда источник потоков станет реальным (например, Kafka), вы можете посмотреть на сторону Кафки вещей для причина.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню