2

使用 Cassandra CLI 给我以下输出:

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

我正在使用RandomPartitioner. 是否有可能在 Cleartext 中获取 RowKey(来自 CLI)?理想情况下在 CLI 中,但如果有一个帮助类将其转换回字符串,这也可以。

我知道密钥以某种方式散列。如果无法“检索”密钥(我必须假设),Cassandra 中是否公开了辅助类,我可以使用它根据我的原始字符串生成密钥来比较它们?

我的问题:我已经在 Cassandra 中存储了记录,但是使用密钥就像"user1|order1"我无法检索记录一样。Cassandra 没有找到任何记录。我认为不知何故我的钥匙错了,我需要比较它们并找出问题所在......

非常感谢 !!延斯

4

2 回答 2

1

这个问题高度相关:Cassandra cli: Convert hex values into a human-readable format

唯一的区别是在 Cassandra 0.8 中,现在每个列族都有一个“key_validation_class”属性,并且默认为 BytesType。当 CLI 看到它是 BytesType 时,它​​以十六进制表示密钥。

于 2011-08-03T01:27:01.787 回答
0

Cassandra 将您的 RowKey 视为十六进制字节:31 30 7c 32 33 32 39十六进制是 10|2329ASCII,我猜这是您的密钥。

如果你想在 CLI 中看到你的明文键,那么你需要给出命令assume MyColumnFamily keys as ascii;,这将使 CLI 在行键中为你自动在 ASCII 和十六进制之间转换。

或者,当您创建列族时,使用create column family MyColumnFamily with key_validation_class = AsciiType;将永久设置首选项。

散列发生在较低级别,不会影响您的问题。

于 2011-08-19T12:49:34.350 回答