2

我正在使用 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'>

任何帮助,将不胜感激。

4

0 回答 0