2014-11-03 57 views
1

我正在嘗試使用Cassandra的sstablekeys實用程序來檢索當前在Cassandra集羣的sstables中的所有鍵。當我爲單個sstable運行sstablekeys時,他們以似乎是序列化格式返回的格式。有誰知道如何反序列化鍵或讓他們回到原來的格式?使用astyanax將它們插入到Cassandra中,其中序列化類型是Scala中的元組。列族的key_validation_class是一個CompositeType。反序列化卡桑德拉行鍵

+1

你確定它們是序列化的嗎?他們看起來怎麼樣? datastax的sstablekeys文檔中的示例(http://www.datastax.com/documentation/cassandra/2.0/cassandra/tools/toolsSStabkeys_t.html)顯示它返回看起來像關鍵哈希的內容。 – 2014-11-04 06:51:47

+0

它們可能只是散列,例如:000c6d79496e636964656e74496400000575736572310000040000000100。我應該注意到我正在使用Cassandra 1.2,而不是2.0。 – mp94 2014-11-04 14:12:55

回答

1

感謝the comment by Thomas Stets,我能夠發現鍵實際上只是轉換爲十六進制並打印出來。請參閱here,讓他們恢復到原始格式。

對於計算CompositeType行鍵的格式並取消修改它的具體問題,請參閱the Cassandra source,其中描述了由sstablekeys輸出的CompositeType鍵的格式。對於CompositeType(UTF8Type,UTF8Type,Int32Type),UTF8Type將字節視爲ASCII字符(因此上述鏈接中的函數適用於此情況),但使用Int32Type時,必須將字節解釋爲一個數字。