我正在使用Spark Steaming从代码片段中使用Kafka的数据:
rdd.foreachRdd{rdd=>rdd.foreachPartition{...}}
我正在使用foreachPartition,因为我需要创建与Hbase的连接,我不想打开/关闭每条记录的连接。 但是我发现当Kafka中没有数据时,spark streaming仍在处理foreachRdd和foreachPartition。 这导致许多Hbase连接被创建,即使没有消耗任何数据。我真的不喜欢这个,当Kafka没有消耗数据时,我怎么能让Spark停止这样做呢。
答案 0 :(得分:3)
只需检查RDD中是否有项目。所以你的代码可能是:
rdd.foreachRdd{rdd=> if(rdd.isEmpty == false) rdd.foreachPartition{...}}