2012-06-14 24 views
1

我已將字符串和整數值插入到Cassandra列族的動態列中。當我查詢CQL中的值時,它們顯示爲十六進制編碼位。Cassandra CQL:如何從列中選擇編碼值

我可以以某種方式告訴查詢將值解碼爲字符串或整數嗎?

我也很樂意在CLI中做到這一點,如果更容易。在那裏,我看到你可以指定assume <column_family> validator as <type>;,但這適用於所有列,它們有不同的類型,所以我必須運行這個假設並多次查詢。

(請注意,列是動態的,所以在創建列族時我沒有指定驗證器)。

+0

你是否在你的columnfamily規範中指定了default_validation_class? – Tamil

+0

@Tamil:不 - 我沒有設置default_validation_class,因爲所有的值都不是相同的類型,所以驗證對於某些列是錯誤的。 –

+0

那麼cql將無法做到我認爲的有效解碼。默認情況下,它是我認爲的bytestype。我沒有試驗'假設'讓我爲你嘗試 – Tamil

回答

0

你可以在cqlsh中使用ASSUME,就像在cassandra-cli中一樣(雖然它只適用於打印值,不會發送它們,但對於你來說應該沒問題)。您也可以使用它在每列的基礎,如:

ASSUME <column_family> ('anchor:cnnsi.com') VALUES ARE text; 

..although(一),我只是測試它,而這個功能在卡桑德拉-1.1.1破損及更高版本。我發佈了一個修復程序CASSANDRA-4352。和(b),這可能不是一個多用途或有用的解決方案,用於一些以上的一次性用途。我強烈推薦在這裏使用CQL 3,因爲CQL直接支持像這樣的寬存儲引擎行已被棄用。您的表格當然適用於(易於使用的)CQL 3模型,但如果不瞭解如何使用它,我不能確切地說明它會是什麼。

+0

這就是我正在尋找的答案 - 認爲必須有指定列的語法,但在任何文檔中都找不到它。通配符會很好,但現在應該這樣做。謝謝。我還會檢查CQL 3。 –