执行程序完成火花流中的RDD处理后,在驱动程序上保存Kafka偏移

时间:2019-02-18 16:14:56

标签: apache-kafka spark-streaming offset

我有一个从Kafka主题读取的Spark Streaming应用程序 我手动管理偏移量以进行恢复。 当我使驱动程序崩溃时,它会自动重新启动,并且写入Kafka主题的最后一个偏移量看起来不错。 但是我怀疑它在执行程序完成之前就写了偏移量,所以我在崩溃之前丢失了最后一块数据。

kafkaSparkInputDStream.foreachRDD(rdd -> {
         OffsetRange[] offsetRanges = ((HasOffsetRanges) rdd.rdd()).offsetRanges();
         Object results = yourCalculation(rdd);
         rdd.for (OffsetRange offsetRange : offsetRanges) {
             if (offsetRange.count() >0) {
                 System.out.println("offsetRange. from [" + offsetRange.fromOffset() +"] until[" + offsetRange.untilOffset()+ "]. count [" + offsetRange.count()+ "] partition [" +offsetRange.partition()+"]" );
             }
         }
         ((CanCommitOffsets) kafkaSparkInputDStream.inputDStream()).commitAsync(offsetRanges);

0 个答案:

没有答案