首页 > 解决方案 > 如何使用 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] (...)">

标签: pythonpython-3.xcassandracql

解决方案


要运行的正确查询是

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'}

推荐阅读