0

在我们的 Cassandra 表中,每次我们更改“集合类型”列的数据类型时,都会引发问题。例如:

为了将数据类型从 更改为textMap<text,float>我们这样做:

  • 删除现有列
  • 等待 cassandra 吸收这种变化。
  • 添加列(相同名称)但不同的数据类型。

这在所有节点中都反映得很好,但是 Cassandra 日志在压缩期间开始抱怨:

RuntimeException: 6d6...73 未定义为集合

我发现表中的comparator条目不正确"system.schema_columnfamilies"。删除表并重新创建它可以解决问题,但并非总是可行。

当我们在上述情况下处理集合类型列时,是否有一些最佳实践?

数据库版本:DataStax-Enterprise:4.7.1 Cassandra 2.1.8.621
cqlsh 5.0.1

4

1 回答 1

1

我猜你偶然发现了 Cassandra 的 WAT 时刻之一。将新列命名为先前删除的列是一种不好的做法。有时它甚至不起作用。关于模式(或数据)迁移,请查看我们的工具。它可以帮助您在保留数据和填充字段的同时执行架构更新。

于 2016-05-11T19:12:18.467 回答