Как настроить кэширование для быстрого чтения строк в Cassandra с использованием Python? - PullRequest
0 голосов
/ 24 января 2019

Мой код для создания таблицы:

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
        )

Моя цель - уменьшить время чтения (выборочный запрос), которое в настоящее время составляет 100 тыс. Строк / 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] (...)">

1 Ответ

0 голосов
/ 24 января 2019

Правильный запрос для запуска -

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