2014-08-28 70 views
0

我有很多現有的Cassandra 2.0.0 CF由Trift API創建,並且希望將來可以使用Datastax DevCenter 1.1.1和CQL3,所以我試圖將blob-s的列類型更改爲更有用的內容。在特定的CF中,所有鍵和值都只是文本(行鍵是一個進程名稱,單元格名稱是某種文本格式的時間戳,值是當時捕獲的字符串)。我已成功將「鍵」類型和「值」類型更改爲「文本」,但「column1」類型使我成爲問題。Cassandra/CQL:如何修改colium1類型?

當從DevCenter運行alter table命令時: alter table mycfname。「MyTableName」alter column1 type text; 我彈出: 無法執行'測試'上的CQL腳本:java.lan.AssertationError

類似的問題已被問到一些其他論壇,但從未回答。 有什麼想法? 關注卓然

+0

您可以包含運行'desc table mycfname。「MyTableName」'的全部輸出以及在alter table命令之後收到的完整異常嗎? – BrianC 2014-08-29 21:32:54

回答

1

插入數據後更改列的類型可能會混淆CQL驅動程序/工具(如果新類型與數據不兼容)。存儲在該列值的字節保持不變,如果現有數據不能按照新類型進行反序列化,則CQL驅動程序或接口可能會報告錯誤。

這些改變到列類型是不允許的:

更改聚類列的類型。 更改定義索引的列。

+0

感謝您指出這一點(來自CQL ALTER TABLE文檔)。一般來說它是有道理的,但是當我改變「key」類型時,我會期待同樣的問題(工作正常,我可以將鍵看作文本)。這意味着從trift到CQL的轉換將變得非常費力(可能需要將數據複製到新表中),並且在某些情況下不值得做。 – ZoS 2014-08-31 20:13:54

+0

如果你正在運行DSE,你可以做一些火花單線魔法來將你的數據移動到一個新的列族(使用新類型)。 – phact 2014-09-02 03:16:14

+0

我們使用Cassandra社區版,並且我剛剛安裝了DS Enterprise以使用它。感謝火花提示。 – ZoS 2014-09-02 08:54:46