【发布时间】:2019-11-04 09:37:55
【问题描述】:
我有一个大的整数矩阵,我希望能够对其进行切片和运行分析。我正在使用 Apache Ignite 对此进行原型设计。
矩阵为 50000 列 x 500 万行。我希望能够在这个矩阵上运行以下操作:
- 获取单个列的所有数据
- 获取一些随机的行和列子集的所有数据。
- 计算一行与其他行的相关系数。
我现在正在尝试满足 1. 和 2.,但我不知道如何存储矩阵。我正在考虑像这样存储矩阵:
row1 {
co1: val
co2: val
co3: val
...
co50000: val
}
row2{ ... }
但我不确定我是否可以在 Ignite 中拥有像这样的复杂数据类型,或者我是否只能拥有一个键:值对。文档不清楚。当我尝试使用 pyignite 插入字典时(我的 Java 有点生疏,所以我现在坚持使用 python),数据以数组形式返回:
>>> test.put('row2', { "col1": 50, "col2":0 })
>>> test.get('cell2')
['gene1', 'gene2']
我是 Apache Ignite 的新手,但文档似乎没有详细说明如何执行此操作,或者它是否会表现出色。
【问题讨论】:
-
因为它是一个整数矩阵,我可能会使用整数作为键和整数数组作为值,因为它会占用更少的内存。请注意,默认情况下,Ignite 将数据存储为一个字节数组,并且每次访问它时都会反序列化值。为避免反序列化,您可以使用堆上缓存模式apacheignite.readme.io/docs/…。从您提供的代码 sn-p 不清楚您想要实现什么以及出了什么问题。
-
我需要能够在列中指定某些值 - 我需要请求 row1、row50、row600 以及 col1、col50000 和 col6。在这种情况下存储整个数组是行不通的,对吧?