2011-08-02 60 views
2

使用Cassandra的CLI給我下面的輸出:Cassandra CLI:RowKey with RandomPartitioner =在明文中顯示密鑰?

RowKey: 31307c32333239 
=> (super_column=3f18d800-fed5-17cf-b91a-0016e6df0376, 
    (column=date, value=1312289229287, timestamp=1312289229647000) 

我使用RandomPartitioner。是否有可能在Cleartext中獲得RowKey(從CLI)?理想情況下在CLI中,但如果有幫助類將其轉換回字符串,這也可以。

我知道密鑰是以某種方式散列的。如果密鑰不能被「取回」(我不得不假設),Cassandra中是否存在助手類,我可以使用它來根據我的原始字符串生成密鑰以比較它們?

我的問題:我已經將記錄存儲在卡桑德拉,但使用密鑰,如"user1|order1"我無法檢索記錄。 Cassandra沒有找到任何記錄。我認爲,不知何故我的鑰匙是錯的,我需要比較他們,並找出問題是...

非常感謝!延

+1

發佈您用於讀取和寫入cassandra的代碼,也許我們可以告訴您爲什麼讀取失敗 – sbridges

回答

0

Cassandra正在將您的RowKey視爲十六進制字節:31 30 7c 32 33 32 39(十六進制)是 10|2329,這是我猜測的關鍵。

如果您想在CLI中看到您的明文密鑰,那麼您需要提供命令assume MyColumnFamily keys as ascii;,這將使CLI在行密鑰中爲您自動在ASCII和十六進制之間進行轉換。

或者,當您創建列族時,使用create column family MyColumnFamily with key_validation_class = AsciiType;將永久設置首選項。

散列發生在較低的級別,並不會影響您的問題。