我目前正在我的环境中使用ScyllaDB,由于技术原因,我正在研究迁移到Cassandra。我正在尝试使用可能与ScyllaDB中当前使用的模式相同的模式,让cassandra压力加载Cassandra集群中的数据。可悲的是,有一些问题。
环境:
卡桑德拉工具
pkg 的一部分) 在 Ubuntu 上运行 18.04过程如下:
desc keyspace_name
)cassandra-stress user profile=schema.yml cl=QUORUM duration=30s'ops(insert=1)'-节点172.19.11.9-速率线程=1
)只是为了确保没有与键空间相关的问题,每次运行cassandra压力都是在一个新的键空间上完成的(我正在增加名称)。
现在,当模式与从Scylla转储的模式1:1时,两个表的定义(且仅这两个)导致压力工具失败:< code > com . datas tax . driver . core . exceptions . syntax error:line 1:35在输入“WHERE”处没有可行的替代项(更新“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'}
如果将包含主键
和聚类顺序的
两行替换为下面的内容,则 cassandra 应力运行正常,没有错误,并开始用数据填充聚类。但是,现在的定义已经偏离了ScyllaDB中的定义:
PRIMARY KEY (event_uuid, create_date)
) WITH CLUSTERING ORDER BY (create_date DESC)
现在,在使用修改后的定义运行卡桑德拉应力之后,我可以回滚到未修改的定义(过去失败的那个)。如果在已存在的密钥空间上运行,则 yaml 现在工作正常,并用数据填充群集。这表明问题在创建表时发生?
在调试模式下运行cassandra-stress和cassandra时,我都无法找到cassandra-stress在其stack-trace中显示的完整查询,这个查询让我有点困惑。
任何想法为什么会发生这个问题?谢谢!
编辑:
附加< code > schema . yml :https://gist . github . com/schybbkoh/76 cdbf 19 a2 bb 933419063526 ff 5 AC 44 f
编辑:
事实证明,“运行正常,没有错误,并开始用数据填充集群”架构仅创建并填充架构中定义的最后一个表。这里有些不对劲。
好了,问题解决了。有两个问题:
我们运行的cassandra集群有3个节点,复制因子为2。 我们的nodejs服务器是查询这个集群的唯一地方。 是否有其他任何地方的参数设置可能导致不一致的查询? cassandra v2.2.4 nodejs驱动程序v3.0.0 编辑-添加我正在做的事情的示例: 1)检查用户名是否被占用 2)创建用户
我目前在cassandra中有一个名为macrecord的表,类似于以下内容: 在这种情况下,我想不出其他解决方案,只有在macadd值重复的情况下删除整行,然后插入具有更新时间戳的新行。 是否有更好的解决方案在macadd值重复时更新时间戳,或者在我的原始表中只有macadd是主键的范围内查询时间戳值的替代方法。
我是卡桑德拉的新手,我正在尝试使用此CQL查询更新表: 我使用DataTax PHP驱动程序在PHP中工作,此语句的代码如下: 表格: 当我执行语句时,我得到错误“缺少强制的PRIMARY KEY部分域”,因此我添加了子句ALLOW FILTERING: 但是我得到另一个错误,“第1:48行在'允许'处缺少EOF”。这些查询出了什么问题?
我用Spring Data Cassandra 2.2.1开发了一个新的应用程序,想在Cassandra 2.1.9服务器上运行它(旧的,我知道)。但是我们得到了错误 Spring数据卡桑德拉手册声称Spring数据2.2.1至少需要卡桑德拉2.1,所以这应该有效,但它没有。我们包含的唯一特定于卡桑德拉的依赖项是 我怎样才能让这个工作?
我使用的是spring数据cassandra,需要使用jpa映射一个字段,在cassandra中,该字段的类型为
我想了解更多关于cassandra压力工具的信息,比如我如何进行压力测试并研究结果。当从cmd执行cassandra-stress时,密钥空间是在哪里创建的,如何查看它们?