SparkStreaming 继续处理 kafka 中甚至没有数据
SparkStreaming keep processing even no data in kafka
我正在使用 Spark Steaming 使用来自 Kafka 的数据,代码片段如下:
rdd.foreachRdd{rdd=>rdd.foreachPartition{...}}
我正在使用 foreachPartition,因为我需要创建与 Hbase 的连接,我不想 open/close 每个记录的连接。
但是我发现当Kafka里面没有数据的时候,spark streaming还在处理foreachRdd和foreachPartition。
这导致即使没有任何数据被消耗,也会创建许多 Hbase 连接。我真的不喜欢这样,请问当没有数据从 Kafka 消费时,我应该如何让 Spark 停止这样做。
简单的检查一下RDD中是否有项。所以你的代码可以是:
rdd.foreachRdd{rdd=> if(rdd.isEmpty == false) rdd.foreachPartition{...}}
我正在使用 Spark Steaming 使用来自 Kafka 的数据,代码片段如下:
rdd.foreachRdd{rdd=>rdd.foreachPartition{...}}
我正在使用 foreachPartition,因为我需要创建与 Hbase 的连接,我不想 open/close 每个记录的连接。 但是我发现当Kafka里面没有数据的时候,spark streaming还在处理foreachRdd和foreachPartition。 这导致即使没有任何数据被消耗,也会创建许多 Hbase 连接。我真的不喜欢这样,请问当没有数据从 Kafka 消费时,我应该如何让 Spark 停止这样做。
简单的检查一下RDD中是否有项。所以你的代码可以是:
rdd.foreachRdd{rdd=> if(rdd.isEmpty == false) rdd.foreachPartition{...}}