我正在使用 Spark 和 HBase(使用 HappyBase 库),并且在使用小型数据集时一切正常。但是,在处理大型数据集时,在多次调用 map 函数后,与 HBase Thrift 的连接会丢失。我现在正在使用一个伪节点。
具体来说,map函数出现以下错误:
TTransportException: Could not connect to localhost:9090
地图功能:
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()
我怀疑它正在发生,因为正在打开许多连接。我试图在主函数中创建“连接”对象并将其作为参数传递给映射函数(类似的东西适用于 Java 中的 HBase 库),但出现以下错误:
pickle.PicklingError: Can't pickle builtin <type 'method_descriptor'>
任何帮助,将不胜感激。