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()

多くの接続が開かれているために発生していると思われます。メイン関数で「接続」オブジェクトを作成し、それをパラメーターとして map 関数に渡そうとしました (このようなものは Java の HBase ライブラリで機能します) が、次のエラーが発生します:

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

どんな助けでも大歓迎です。

4

0 に答える 0