Я пытаюсь загрузить большую матрицу в главный узел Apache Ignite, работающий в AWS.Экземпляр EC2 имеет 128 ГБ памяти и 512 ГБ дискового пространства.
Матрица представляет собой CSV с 50 000 столбцов и 15 000 строк.
Загрузка очень медленная - первые 150 вставляют порцию вместе и работают более 30 минут.Я использую тонкий клиент Python
import pandas as pd
import pyignite
from pyignite import Client
client = Client()
client.connect('127.0.0.1', 10800)
print('deleting records...')
client.sql('DELETE FROM full_test_table')
df = pd.read_csv('exon.csv')
col = list(df)
col = col[1:]
names = ', '.join('"' + item + '"' for item in col)
names = 'name, ' + names
#print(names)
for index, row in df.iterrows():
print('inserting for {0}'.format(str(row[0])))
row[0] = '\"{0}\"'.format(row[0])
row[0] = str(index)
values = ', '.join(str(item) for item in row)
sql = 'INSERT INTO full_test_table ({0}) VALUES({1})'.format(names, values)
client.sql(sql)
Я бы хотел использовать Python для загрузки данных, так как я более знаком с этим, чем с Java.Это кажется мне неоправданно медленным - даже PostgreSQL может взять эти вставки за считанные секунды.В чем проблема?
Я также попробовал команду COPY из CSV - похоже, она не работает быстрее.