2016-08-23 114 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的類似方法)將數據加載到該表中。如果您無法容忍表格名稱的更改,則需要備份數據,刪除舊錶格,然後使用正確的類型重新創建表格。