【发布时间】:2019-06-26 18:10:43
【问题描述】:
我正在尝试将一个大型矩阵加载到在 AWS 中运行的 Apache Ignite 主节点中。 EC2 实例有 128GB 内存和 512GB 磁盘空间。
矩阵是一个包含 50,000 列和 15,000 行的 CSV。
加载速度非常慢 - 前 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 也可以在几秒钟内完成这些插入。有什么问题?
我也尝试过 CSV 中的 COPY 命令 - 这似乎没有更快的工作。
【问题讨论】:
-
您的 Ignite 配置是什么?你是如何创建缓存的,它是如何配置的?你在使用持久化吗?
-
我刚刚使用了 50,000 列的 SQL CREATE TABLE。我正在使用持久性。
标签: python sql ignite in-memory-database key-value-store