如何测试流窗口聚合?

时间:2018-01-04 11:30:55

标签: apache-spark scalatest spark-structured-streaming

我从Kafka读取了一些数据,并通过以下方式对其进行窗口聚合:

inputDataSet
      .groupBy(functions.window(inputDataSet.col("timestamp"), "1 minutes"),
        col("id")))
      .agg(count("secondId").as("myCount")) 

如何对这段代码进行单元测试?网上的所有示例都是围绕Dstreams,但我使用的是通过以这种方式从Kafka加载数据集:

sparkSession.readStream
      .format("kafka")
      .option("kafka.bootstrap.servers", Settings.KAFKA_URL)
      .option("subscribe", Settings.KAFKA_TOPIC1)
      .option("failOnDataLoss", false)
      .option("startingOffsets", "latest").load()
      .select(from_json(col("value").cast("String"), mySchema).as("value"))

并将此数据集传递给我的聚合函数

1 个答案:

答案 0 :(得分:2)

我还没有听说过一个测试框架可以帮助您开箱即用于测试流数据集(在Spark内部使用的测试套件旁边)。

如果我要测试流式数据集,我使用Kafka源,因为它不会给测试增加太多,但会引入另一层可能出错的地方。

我使用memory sourcesink。我还将在Spark repo中查看结构化流的测试,尤其是。 StreamingAggregationSuite因为您询问了窗口化流式聚合。将测试用作您可以用于自己测试的一套指南。