Python:多处理Hive查询



我正在尝试通过从map传递表名来执行多个Hive查询,即

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的任何参考。

任何帮助/建议都非常感谢。

问题是当你调用map函数时,你有很多额外的括号。

试试这个,它应该可以正常工作。

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

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

最新更新