Java 中的 Spark 结构化流单元测试
Spark Structured Streaming Unit Test in Java
我正在开发一个 api 来使用 Spark Structured Streaming 从 Kafka 读取数据并写入 Java 中的 blob 存储。我找不到为此编写单元测试的方法。我有一个 reader class 其中 returns 一个数据集和一个 writer class 将数据集作为输入并以指定格式写入 blob 存储。我在 MemoryStream 上看到了一些博客,但认为它不足以满足我的需求。
提前致谢。
显然,您可以参考这个关于我们如何使用内存流进行单元测试的答案 - Unit Test - structured streaming
此外,您还可以查看 Holden Karau 的这个 spark-testing-base。 Spark testing base
并且您可以模拟来自 Kafka 的流式数据帧和 运行 测试用例,以在该数据帧之上的代码中进行转换。
样本:
static Dataset<Row> createTestStreamingDataFrame() {
MemoryStream<String> testStream= new MemoryStream<String>(100, sqlContext(), Encoders.STRING());
testStream.addData((Arrays.asList("1,1","2,2","3,3")).toSeq());
return testStream.toDF().selectExpr(
"cast(split(value,'[,]')[0] as int) as testCol1",
"cast(split(value,'[,]')[1] as int) as testCol2");
}
我正在开发一个 api 来使用 Spark Structured Streaming 从 Kafka 读取数据并写入 Java 中的 blob 存储。我找不到为此编写单元测试的方法。我有一个 reader class 其中 returns 一个数据集和一个 writer class 将数据集作为输入并以指定格式写入 blob 存储。我在 MemoryStream 上看到了一些博客,但认为它不足以满足我的需求。
提前致谢。
显然,您可以参考这个关于我们如何使用内存流进行单元测试的答案 - Unit Test - structured streaming
此外,您还可以查看 Holden Karau 的这个 spark-testing-base。 Spark testing base
并且您可以模拟来自 Kafka 的流式数据帧和 运行 测试用例,以在该数据帧之上的代码中进行转换。
样本:
static Dataset<Row> createTestStreamingDataFrame() {
MemoryStream<String> testStream= new MemoryStream<String>(100, sqlContext(), Encoders.STRING());
testStream.addData((Arrays.asList("1,1","2,2","3,3")).toSeq());
return testStream.toDF().selectExpr(
"cast(split(value,'[,]')[0] as int) as testCol1",
"cast(split(value,'[,]')[1] as int) as testCol2");
}