在我的Spark流应用程序中,我使用HBaseContext将一些值放入HBase,每个处理过的消息都有一个put操作。
如果我使用hbaseForeachPartitions,一切正常。
dStream
.hbaseForeachPartition(
hbaseContext,
(iterator, connection) => {
val table = connection.getTable("namespace:table")
// putHBase is external function in the same Scala object
val results = iterator.flatMap(packet => putHBaseAndOther(packet))
table.close()
results
}
)
与hbaseMapPartitions相反,与HBase的连接已关闭。
dStream
.hbaseMapPartition(
hbaseContext,
(iterator, connection) => {
val table = connection.getTable("namespace:table")
// putHBase is external function in the same Scala object
val results = iterator.flatMap(packet => putHBaseAndOther(packet))
table.close()
results
}
)
有人可以解释我为什么?