升级Cassandra节点至3.11.13后出现NoSuchMethodError错误求助
问题解决方法
错误根源
你遇到的java.lang.NoSuchMethodError是因为当前使用的TimeWindowCompactionStrategy-3.7.jar是为Cassandra 2.x版本开发的第三方压缩策略包,升级到Cassandra 3.11.13后,Cassandra核心API已发生变化,旧jar包中的方法调用无法匹配新版本的Cassandra内部方法。另外,Cassandra 3.8及以后版本已经内置了TimeWindowCompactionStrategy,完全不需要依赖这个第三方jar包。
解决步骤
- 停止出现错误的Cassandra节点
- 找到Cassandra安装目录下的
lib文件夹,删除其中的TimeWindowCompactionStrategy-3.7.jar文件 - 重新启动该Cassandra节点
- (可选)检查集群中所有使用TWCS的表的配置,确保压缩策略的类路径是内置的
org.apache.cassandra.db.compaction.TimeWindowCompactionStrategy,而非第三方的com.jeffjirsa.cassandra.db.compaction.TimeWindowCompactionStrategy。如果配置错误,执行以下命令修改表的压缩策略(替换keyspace_name和table_name为实际值):
ALTER TABLE keyspace_name.table_name WITH compaction = {'class': 'org.apache.cassandra.db.compaction.TimeWindowCompactionStrategy', 'window_size': '86400'};
内容的提问来源于stack exchange,提问作者Solver
相关产品推荐
相关产品推荐

