python - 如何使用 python 在 Cassandra 中设置缓存以快速读取行?
问题描述
我创建表的代码是:
c_sql = "CREATE TABLE IF NOT EXISTS {} (id varchar, version int, row_hash varchar, PRIMARY KEY((version), id)) WITH caching ('keys' : 'NONE')".format(
self.table_name
)
我的目标是减少当前为 100k 行/20 秒的读取(选择查询)时间。因此,我希望有一个本答案中建议的缓存系统。但是,我只能找到一种这样做的语法,并且会产生错误。错误是:
Traceback (most recent call last):
File "getting_started.py", line 420, in <module>
example1.create_table_and_set_version('five_hundred_rows')
File "getting_started.py", line 116, in create_table_and_set_version
self.session.execute(c_sql)
File "cassandra/cluster.py", line 2171, in cassandra.cluster.Session.execute
File "cassandra/cluster.py", line 4062, in cassandra.cluster.ResponseFuture.result
cassandra.protocol.SyntaxException: <Error from server: code=2000 [Syntax error in CQL query] message="line 1:130 no viable alternative at input '(' (...version), id)) WITH [caching] (...)">
解决方案
要运行的正确查询是
create table if not EXISTS my_ks.my_table ( id varchar, version int, row_hash varchar , primary KEY ((version),id)) WITH caching = {'keys': 'NONE'}
我建议首先在 cqlsh 中尝试查询,以检测一些不匹配,就像在这种情况下一样。缓存的正确语法是
...WITH caching = {'keys': 'NONE'}
推荐阅读
- kendo-ui - KendoUI (Telerik 2018) - TreeList 直到手动刷新才显示新创建的记录
- docker - 用于远程执行 Docker 操作的 Docker Rest API
- ruby-on-rails - Google recaptcha disappears after second click in the signup button on navbar
- nativescript - IOS 构建中的 nativescript 5.1 和 tns_modules 文件夹
- python - 通过 Eikon api 合并 CRSP 和 Eikon
- java - 为 orientDB 使用 vertex.setProperties() 函数时出错
- android - 无法在 Android Studio 上接受 sdk 许可证
- python - UnicodeEncodeError:“ascii”编解码器无法在打印函数中编码字符
- jquery - Fancybox 不能很好地与里面的表格一起工作
- python - 如何从图像中分离出手写数字候选者?