2016-08-23 111 views
1

我们有一个用例来更改cassandra表列(将类型从Int更改为Long),因为它不支持从Int更改为varInt,因此我们很好。如何迁移cassandra集群列更改

但是在一些表格中这个列是一个簇列,我们没有办法改变它。

我很好奇什么是处理这种情况的最佳方法。

+0

我有同样的问题,并在页面: https://docs.datastax.com/en/cql/3.1/cql/cql_reference/cql_data_types_c.html#concept_ds_wbk_zdt_xj__cql_data_type_compatibility 说,内部 - > varint应该是可能的。 – Chobicus

+0

那么,我已经检查了Cassandra代码,看起来文档是错误的。您无法更改群集列类型。 – Chobicus

+0

在CLUSTERING列的情况下,方法AlterTableStatement.validateAlter(CFMetaData,ColumnDefinition,AbstractType )检查isCompatibleWith方法,该方法未在IntegerType和Int32Type中实现,因此它缺省为Type检查,这是针对这两种类型的FALSE。 – Chobicus

回答

2

您无法更改Cassandra中的集群列 - 您需要创建一个新表并使用第三方应用程序(最简单的或类似Spark的类似方法)将数据加载到该表中。如果您无法容忍表格名称的更改,则需要备份数据,删除旧表格,然后使用正确的类型重新创建表格。