我正在使用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'>
任何帮助都将不胜感激。
暂无答案!
目前还没有任何答案,快来回答吧!