如何测试流 window 聚合?

How to test streaming window aggregations?

我从 Kafka 读取了一些数据并按以下方式对其执行 window 聚合:

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"))

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

我还没有听说过可以帮助您开箱即用地测试流式数据集的测试框架(除了内部使用的 Spark 本身的测试套件之外)。

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

我会使用 memory source and sink. I'd also review the tests for Structured Streaming in the Spark repo, esp. StreamingAggregationSuite 因为你询问了窗口流聚合。将这些测试用作您可以用于自己的测试的一组指南。