首页 > 解决方案 > 从 Python 优化 Impala 数据加载的建议

问题描述

我创建了这段代码来将数据上传到Impala中的表中,Python但它太慢了。我基本上将一个表转换为一个数组,以避免我正在检索的一些错误。

arr2 = np.array(tbl2)

tbl2具有以下列:

cols1 = ['DATE1', 'DATE2', 'REGION', 'STATE', 'CITY', 'N_SAMPLE', 'UOM', 'AVG_RESALE', 'STD_RESALE',
         'P_MIN_RESALE', 'P_MAX_RESALE', 'MARGEM_RESALE', 'COEF_RESALE', 'AVG_DISTRI', 'STD_DISTRI', 'P_MIN_DISTRI',
         'P_MAX_DISTRI', 'COEF_DISTRI', 'MATERIAL']

然后,插入数据的代码:

sql_insert = f"INSERT INTO prd_product_123.table ({', '.join(cols1)}) VALUES ({', '.join(list('?'*len(cols1)))}) ;"

for i in range(0, len(arr2)):
    cursor.execute(sql_insert, list(arr2[i].transpose()))
    cursor.commit()
    print('Row ' + str(i) + ' loaded!')

问题是原始表tbl2有超过 1,000,000 行,顺便说一下,将它加载到 Impala 需要几天的时间。

有没有办法更有效地加载它?

标签: pythonbulkinsertimpala

解决方案


推荐阅读