【问题标题】:Cassandra CLI: RowKey with RandomPartitioner = Show Key in Cleartext?Cassandra CLI:带有 RandomPartitioner 的 RowKey = 在明文中显示密钥?
【发布时间】:2023-03-20 10:59:01
【问题描述】:

使用 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 没有找到任何记录。我假设我的密钥不知何故是错误的,我需要比较它们并找出问题所在......

非常感谢!!延斯

【问题讨论】:

  • 贴出你用来读写cassandra的代码,也许我们可以告诉你为什么你的读取失败

标签: nosql cassandra hector


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    如果您想在 CLI 中查看明文密钥,则需要提供命令 assume MyColumnFamily keys as ascii;,这将使 CLI 自动在行密钥中为您在 ASCII 和十六进制之间进行转换。

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

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

    【讨论】:

      猜你喜欢
      • 2011-10-12
      • 2013-03-29
      • 2013-12-26
      • 1970-01-01
      • 1970-01-01
      • 2019-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多