SparkStreaming在kafka中继续处理甚至没有数据

时间:2015-09-06 17:45:33

标签: apache-spark apache-kafka spark-streaming rdd

我正在使用Spark Steaming从代码片段中使用Kafka的数据: rdd.foreachRdd{rdd=>rdd.foreachPartition{...}}

我正在使用foreachPartition,因为我需要创建与Hbase的连接,我不想打开/关闭每条记录的连接。 但是我发现当Kafka中没有数据时,spark streaming仍在处理foreachRdd和foreachPartition。 这导致许多Hbase连接被创建,即使没有消耗任何数据。我真的不喜欢这个,当Kafka没有消耗数据时,我怎么能让Spark停止这样做呢。

1 个答案:

答案 0 :(得分:3)

只需检查RDD中是否有项目。所以你的代码可能是:

rdd.foreachRdd{rdd=> if(rdd.isEmpty == false) rdd.foreachPartition{...}}