我试图通过从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的引用。
任何帮助/建议都将不胜感激。
1条答案
按热度按时间ao218c7q1#
问题是当你调用一个
map
功能。试试这个,它应该工作没有任何问题。
我认为您要处理的实际表高于3,否则在3个表上创建5个线程是没有意义的。