Python: многопроцессорные запросы на кусты

Я пытаюсь выполнить несколько запросов о кустах, передав имена таблиц из карты, т. Е.

from pyhive import hive
from multiprocessing import Pool
from functools import partial
import pandas as pd

conn = hive.connect('hive_connection',99999,
                          username='user',
                          password='password',
                          auth='LDAP')

query = 'select * from hive_db.{hive_table_name} limit 500'.format(hive_table_name=hive_table_name)

def hivetable(hive_table_name):
    query = 'select * from hive_db.{hive_table_name} limit 10'.format(table_name=hive_table_name)
    result = pd.read_sql(query,conn)
    return result

if __name__ == "__main__" :
    p = Pool(5)
    print p.map(((hivetable, ['hive_table1','hive_table2','hive_table3'])))

но получение:

TypeError: map() takes at least 3 arguments (2 given)

Как я могу добиться многопроцессорности здесь и решить текущую проблему? Пробовал другие ссылки, но не смог найти ни одного из них.

Любая помощь / предложение заслуживает высокой оценки.

Всего 1 ответ


проблема в том, что у вас есть так много дополнительных круглых скобок, когда вы вызываете функцию map .

Попробуйте это, и он должен работать без каких-либо проблем.

if __name__ == "__main__" :
    p = Pool(5)
    print p.map(hivetable, ['hive_table1','hive_table2','hive_table3'])

Я считаю, что фактическая таблица, которую вы хотите обработать, выше 3, в противном случае нет смысла создавать 5 потоков на 3 таблицах.


Есть идеи?

10000