Java中的Spark结构化流单元测试
我正在开发一个api,使用Spark结构化流技术从Kafka读取数据并写入Java中的blob存储。我找不到为此编写单元测试的方法。我有一个reader类返回一个数据集,还有一个writer类将数据集作为输入并以指定格式写入blob存储。我在MemoryStream上看到了一些博客,但我认为这还不够Java中的Spark结构化流单元测试,java,apache-spark,junit,apache-kafka,spark-structured-streaming,Java,Apache Spark,Junit,Apache Kafka,Spark Structured Streaming,我正在开发一个api,使用Spark结构化流技术从Kafka读取数据并写入Java中的blob存储。我找不到为此编写单元测试的方法。我有一个reader类返回一个数据集,还有一个writer类将数据集作为输入并以指定格式写入blob存储。我在MemoryStream上看到了一些博客,但我认为这还不够 提前感谢。显然,您可以参考这个答案,了解我们如何使用内存流进行单元测试- 另外,你可以看看霍尔顿·卡劳的火花测试基地 您可以模拟来自Kafka的流数据帧,并在该数据帧之上运行代码中的转换测试用例 样
提前感谢。显然,您可以参考这个答案,了解我们如何使用内存流进行单元测试- 另外,你可以看看霍尔顿·卡劳的火花测试基地 您可以模拟来自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");
}
显然,您可以参考这个答案,了解如何使用内存流进行单元测试- 另外,你可以看看霍尔顿·卡劳的火花测试基地 您可以模拟来自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");
}
@mhlaskar1991-这澄清了你的疑问吗?!谢谢@act_coder@act_coderPySpark有什么解决方案吗?@mhlaskar1991-这澄清了你的疑问吗?!谢谢@act_coder@act_coderPySpark有什么解决方案吗?您需要更精确一点:您希望对代码的哪一部分进行单元测试?读卡夫卡,写blob存储,哪种类型?或者你可能要应用的某种中间转换?根据部件的不同,单元测试可能不同。对于输入卡夫卡和输出存储,您需要模拟外部系统进行测试。您需要更精确一点:您希望对代码的哪一部分进行单元测试?读卡夫卡,写blob存储,哪种类型?或者你可能要应用的某种中间转换?根据部件的不同,单元测试可能不同。对于输入卡夫卡和输出存储,您需要模拟外部系统进行测试