scala中worker关闭时如何处理spark上的hbase连接关闭

kqhtkvqz  于 2021-06-09  发布在  Hbase
关注(0)|答案(2)|浏览(389)

我们在spark cluster上运行了一个作业,该作业需要写入hbase。由于hbase连接不能在节点之间共享,所以我生成连接供worker使用。现在我对何时关闭hbase连接有问题。根据hbase最佳实践,如果我知道工人何时结束,我应该自己关闭它。但是,如果工作进程被驱动程序杀死或因任何错误而终止,hbase连接是否会自动关闭?如果没有,在这种情况下,我在哪里处理hbase连接。我知道连接泄漏不好,但不知道如何避免。谢谢。

wfsdck30

wfsdck301#

我想如果遗嘱执行人被杀了,它会抛出一个 java.lang.InterruptedException ,您可以抓住并关闭 HBase 优雅地连接。

kzmpq1sx

kzmpq1sx2#

您可以尝试以下代码:

val tableName = TableName.valueOf(tablename)
    val connection = ConnectionFactory.createConnection(conf)
    try {
       // Put your HBASE write logic here

    } finally {
      connection.close()     
    }

相关问题