通过sparkMap共享happybase连接

q7solyqu  于 2021-06-09  发布在  Hbase
关注(0)|答案(0)|浏览(169)

我正在使用spark和hbase(使用happybase库),在使用小数据集时一切正常。但是,在处理大型数据集时,在多次调用map函数之后,与hbase-thrift的连接就会丢失。我现在正在处理一个伪节点。
具体来说,map函数发生以下错误:

TTransportException: Could not connect to localhost:9090

Map功能:

def save_triples(triple, ac, table_name, ac_vertex_id, graph_table_name):
    connection = happybase.Connection(HBASE_SERVER_IP, compat='0.94')
    table = connection.table(table_name)
    [...]
    connection.close()

这是对map函数的调用:

counts = lines.map(lambda x: save_triples(x, ac, table_name, ac_vertex_id, graph_table_name))
output = counts.collect()

我怀疑这是因为许多连接正在被打开。我曾尝试在main函数中创建“connection”对象,并将其作为参数传递给map函数(类似的内容在java中适用于hbase库),但出现以下错误:

pickle.PicklingError: Can't pickle builtin <type 'method_descriptor'>

任何帮助都将不胜感激。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题