问题描述
我们每1分钟就会收到一些文本文件,并使用Spark Streaming对其进行汇总
JavaStreamingContext ssc = new JavaStreamingContext(sparkConf, Durations.seconds(60);
JavaDStream<String> file = ssc.textFileStream(inputDir)
但是,完成聚合后,我们希望将聚合的JavaPairDStream<>
与另一个提要(该提要是参考数据,每1小时到达一次)一起加入。
在Spark Streaming中是否可以加入两个以不同时间间隔到达的提要?
有人这样做吗?
1楼
您应该将第一个提要聚合的结果作为RDD保留在磁盘上,以便DStream可以从内存中删除批处理数据并继续运行。 当其他DStream启动批处理时,您可以将其与以前创建的RDD合并。
请参阅
2楼
我们在Stream-DatSet联接上查看了Spark文档: ://spark.apache.org/docs/latest/streaming-programming-guide.html#output-operations-on-dstreams
并发现其中有一个重载的方法
<K2,V2> JavaPairDStream<K2,V2> transformToPair(Function<R,JavaPairRDD<K2,V2>> transformFunc)
<K2,V2> JavaPairDStream<K2,V2> transformToPair(Function2<R,Time,JavaPairRDD<K2,V2>> transformFunc)
它接受时间参数,并且实际上可以在每个流传输间隔期间刷新数据集。 这解决了我们的问题。