我从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"))
并将此数据集传递给我的聚合函数
答案 0 :(得分:2)
我还没有听说过一个测试框架可以帮助您开箱即用于测试流数据集(在Spark内部使用的测试套件旁边)。
如果我要测试流式数据集,我不使用Kafka源,因为它不会给测试增加太多,但会引入另一层可能出错的地方。
我使用memory
source和sink。我还将在Spark repo中查看结构化流的测试,尤其是。 StreamingAggregationSuite因为您询问了窗口化流式聚合。将测试用作您可以用于自己测试的一套指南。