python:多处理配置单元查询

kkbh8khc  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(254)

我试图通过从map传递表名来执行多个配置单元查询,即。

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)

如何在这里实现多重处理并解决当前问题?尝试了其他引用,但找不到任何有关sql的引用。
任何帮助/建议都将不胜感激。

ao218c7q

ao218c7q1#

问题是当你调用一个 map 功能。
试试这个,它应该工作没有任何问题。

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

我认为您要处理的实际表高于3,否则在3个表上创建5个线程是没有意义的。

相关问题