如何测试流 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 因为你询问了窗口流聚合。将这些测试用作您可以用于自己的测试的一组指南。
我从 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 因为你询问了窗口流聚合。将这些测试用作您可以用于自己的测试的一组指南。