Ошибка обновления Cassandra-Stress: ограничения срезов не поддерживаются для столбцов кластеризации в инструкциях UPDATE

Я борюсь с Кассандрой-стрессом. Я ищу, чтобы настроить мой кластер C*, который обслуживает приложения, выполняющие обновления и удаления.

Я не нашел обширной документации для cassandra-стресса, которая иллюстрирует использование, поэтому потребовалось много времени, чтобы заставить его работать со вставками и чтениями. Поскольку мои приложения выполняют обновления и удаления, мне нужно провести стресс-тест для этого использования.

У меня есть таблица следующим образом:

table: eventsrawtest
table_definition: |
  CREATE TABLE stresstest.eventsrawtest (
    my_id text,
    my_info text,
    my_date text,
    my_time timestamp,
    my_stats bigint,
    PRIMARY KEY ((my_id, my_info, my_date), my_time)
  ) WITH CLUSTERING ORDER BY (node_time DESC)
    AND bloom_filter_fp_chance = 0.01
    AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
    AND comment = ''
    AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'}
    AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'}
    AND crc_check_chance = 1.0
    AND dclocal_read_repair_chance = 0.1
    AND default_time_to_live = 0
    AND gc_grace_seconds = 864000
    AND max_index_interval = 2048
    AND memtable_flush_period_in_ms = 0
    AND min_index_interval = 128
    AND read_repair_chance = 0.0
    AND speculative_retry = '99PERCENTILE'

Я знаю, что это много, но я пытаюсь воспроизвести основной CF, используемый в C * для рассматриваемых приложений.

Здесь my_time - ключ кластеризации.

Мои вопросы о стрессе Кассандры в yaml следующие:

queries:
  simple1:
    cql: select * from eventsrawtest where my_id = ? and my_info = ? and my_date = ?
    fields: samerow             # pick selection values from same row in partition
  range1:
    cql: select * from eventsrawtest where my_id = ? and my_info = ? and my_date = ? and my_time >= ? and my_time <= ?
    fields: multirow             # pick selection values from same row in partition
  update1:
    cql: update eventsrawtest set bytes_received = ? where my_id = ? and my_info = ? and my_date = ? and my_time = ?
    fields: samerow
  update2:
    cql: update eventsrawtest set bytes_received = ? where my_id = ? and my_info = ? and my_date = ? and my_time >= ? and my_time <= ?
    fields: multirow

Когда я запускаю Cassandra-Stress с этими запросами

cassandra-stress user profile=./my-stress-test.yaml n=1000000 "ops(simple1=1,range1=1,update1=1,update2=1)" no-warmup cl=QUORUM -node 1.db,2.db,3.db -mode native cql3

Я получаю эту ошибку для update1, а также update2

com.datastax.driver.core.exceptions.InvalidQueryException: Slice restrictions are not supported on the clustering columns in UPDATE statements

Я новичок в C*, и это объясняет, почему я действительно не понимаю ошибку. Я еще не нашел четкого объяснения того, почему я получаю эту ошибку, тем более, что является исправлением для этого. Мне нужен ключ кластеризации my_time в моем запросе на обновление, но в противном случае действительные запросы для my_time просто не работают с cassandra-стрессом.

Любое руководство, помощь, указатели, просто что-то будет очень цениться.

0 ответов

Другие вопросы по тегам