Предложение по оптимизации загрузки данных Impala от Python - PullRequest
0 голосов
/ 12 марта 2020

Я создал этот код для загрузки данных в таблицу в 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 потребуются дни.

Есть ли способ загрузить его более эффективно?

...