锡拉”模式在使用cassandra应力导入时会导致问题

6mzjoqzu  于 2021-06-10  发布在  Cassandra
关注(0)|答案(1)|浏览(378)

我目前正在我的环境中使用锡拉开发银行,由于技术原因,我正在研究搬到Cassandra。我试图让cassandra使用可能与scylladb中当前使用的模式相同的模式,向cassandra集群加载数据。可悲的是,有些问题。
环境:
运行在ubuntu 18.04上的scylladb 3.0.7(=cassandra 3.0.8)
运行在ubuntu 18.04上的cassandra 3.11.4
Cassandra应力3.0.18(部分 cassandra-tools pkg)运行在ubuntu 18.04上
过程如下:
从scylladb转储架构( desc keyspace_name )
准备cassandra stress yaml文件-一个键空间,总共五个表
运行Cassandra压力( cassandra-stress user profile=schema.yml cl=QUORUM duration=30s 'ops(insert=1)' -node 172.19.11.9 -rate threads=1 )
为了确保没有与键空间相关的问题,每次运行cassandra压力都是在一个新的键空间上完成的(我正在增加名称)。
现在,当模式与scylla转储的模式是1:1时,两个表的定义(只有这两个)会导致stress工具失败: com.datastax.driver.core.exceptions.SyntaxError: line 1:35 no viable alternative at input 'WHERE' (UPDATE "activities_bp_action" SET [WHERE]...) .
表格定义如下:

table: activities_bp
table_definition: |
  CREATE TABLE activities_bp  (
    business_profile_id int,
    create_date timestamp,
    event_uuid uuid,
    PRIMARY KEY (business_profile_id, create_date, event_uuid)
  ) WITH CLUSTERING ORDER BY (create_date DESC, event_uuid ASC)
    AND compression = {'sstable_compression': 'org.apache.cassandra.io.compress.DeflateCompressor'}
table: activities_bp_action
table_definition: |
  CREATE TABLE activities_bp_action  (
    business_profile_id int,
    action text,
    create_date timestamp,
    event_uuid uuid,
    PRIMARY KEY ((business_profile_id, action), create_date, event_uuid)
  ) WITH CLUSTERING ORDER BY (create_date DESC, event_uuid ASC)
    AND compression = {'sstable_compression': 'org.apache.cassandra.io.compress.DeflateCompressor'}

如果两行包含 PRIMARY KEY 以及 CLUSTERING ORDER 替换为以下内容时,cassandra压力运行良好,没有错误,并开始用数据填充集群。然而,现在的定义已经偏离了锡拉的定义:

PRIMARY KEY (event_uuid, create_date)
  ) WITH CLUSTERING ORDER BY (create_date DESC)

现在,在cassandra stress使用修改后的定义运行之后,我可以回滚到未修改的定义(以前失败的定义)。如果在已经存在的键空间上运行,那么yaml现在可以正常工作,并用数据填充集群。这表明问题发生在创建表时?
在调试模式下运行cassandra-stress和cassandra时,我都找不到cassandra-stress在堆栈跟踪中显示的完整查询,这个查询让我有点困惑。
你知道为什么会出问题吗?谢谢!
编辑:
附加 schema.yml : https://gist.github.com/schybbkoh/76cdbf19a2bb933419063526ff5ac44f
编辑:
事实证明,“运行良好,没有错误,并开始用数据填充集群”模式只创建并填充模式中定义的最后一个表中的数据。这里有点不对劲。

tjrkku2a

tjrkku2a1#

好了,问题解决了。有两个问题: cassandra-stress 3.0.18Cassandra 3.11.4 使用不同的cql规范(发生冲突) cassandra-stress 3.x 不支持一个yml中的多个表定义(请参阅https://issues.apache.org/jira/browse/cassandra-8780)

相关问题