通过瘦python clien在apacheignite中存储原始二进制值

2024-06-02 08:58:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用瘦Python客户机将一些原始二进制数据保存到apacheignite中,这个过程非常缓慢(实际上,它看起来取决于数据的大小)。在

对于我的简单测试用例,我使用单节点(版本2.7.0,没有任何特定配置)启动了本地点火:

$ bin/ignite.sh 

另外,我有一个二进制文件,其中包含要存储在Ignite中的内容。大小如果在6MB左右。 以下是我的源代码:

^{pr2}$

在我的_缓存.put这个过程就冻结了。我甚至没能等到最后(我在2分钟后就终止了)。在

但是,将转换为字符串的文件内容传递的速度非常快。在

^{3}$

我错过了什么?在

更新

我用@jock tanner提出的方法,对我想要点燃的数据的大小进行了讨论。我得到的是:

size: 1024, elapsed time: 0.0045130252838134766 secs
size: 2048, elapsed time: 0.007149457931518555 secs
size: 4096, elapsed time: 0.004557132720947266 secs
size: 8192, elapsed time: 0.010631561279296875 secs
size: 16384, elapsed time: 0.025577783584594727 secs
size: 32768, elapsed time: 0.07686495780944824 secs
size: 65536, elapsed time: 0.2685544490814209 secs
size: 131072, elapsed time: 0.8761806488037109 secs
size: 262144, elapsed time: 3.121284246444702 secs
size: 524288, elapsed time: 12.343520879745483 secs
size: 1048576, elapsed time: 53.10914897918701 secs
size: 2097152, elapsed time: 205.68292760849 secs

将2MB数据放入本地安装的Ignite需要3分钟以上。可能是我的点火器配置问题吗?在


Tags: 文件数据版本内容size客户机节点time
2条回答

抱歉,但是您不能像您在第一个示例中尝试的那样在Ignite中存储二进制数据。如果可能,您应该将其转换为Unicode字符串(如第二个示例中所做的那样),或者将其转换为一个字节序列:

cache1.put('key', [ord(x) for x in file_content], value_hint=ByteArrayObject)

与Redis键和值不同,它们只是二进制字符串,Ignite键和值实际上是类型化的。在pyignite中,我试图在duck类型友好的get/put语义后面隐藏这个事实,但它仍然在显示。在

您可以在以下文档中了解Ignite数据类型以及如何使用它们:

请注意,Ignite类型系统是基于JavaOne的,这就是为什么一般没有关于Ignite数据类型的文档。在

根据从@jock tanner收到的信息,这似乎是Python瘦客户机上的一个缺陷。相应的JIRA票据被创建-https://issues.apache.org/jira/browse/IGNITE-11854。在

相关问题 更多 >