【问题标题】:deserialize cassandra row key反序列化 cassandra 行键
【发布时间】:2014-12-30 11:29:18
【问题描述】:

我正在尝试使用 Cassandra 的 sstablekeys 实用程序来检索当前在 Cassandra 集群的 sstables 中的所有密钥。当我为单个 sstable 运行 sstablekeys 时,它们返回的格式似乎是序列化格式。有谁知道如何反序列化密钥或将它们恢复为原始格式?使用 astyanax 将它们插入 Cassandra,其中序列化类型是 Scala 中的元组。列族的 key_validation_class 是 CompositeType。

【问题讨论】:

  • 你确定它们是序列化的吗?他们看起来怎么样? datastax (datastax.com/documentation/cassandra/2.0/cassandra/tools/…) 的 sstablekeys 文档中的示例显示它返回看起来像密钥哈希的内容。
  • 它们可能只是经过哈希处理,例如:000c6d79496e636964656e74496400000575736572310000040000000100。我应该注意我使用的是 Cassandra 1.2,而不是 2.0。

标签: scala serialization cassandra astyanax


【解决方案1】:

感谢the comment by Thomas Stets,我能够弄清楚密钥实际上只是转换为十六进制并打印出来。请参阅 here 了解如何将它们恢复为原始格式。

关于找出 CompositeType 行键的格式并将其取消十六进制化的具体问题,请参阅the Cassandra source,它描述了由 sstablekeys 输出的 CompositeType 键的格式。使用 CompositeType(UTF8Type, UTF8Type, Int32Type),UTF8Type 将字节视为 ASCII 字符(因此上面链接中的函数在这种情况下有效),但使用 Int32Type,您必须将字节解释为一个数字。

【讨论】:

    猜你喜欢
    • 2011-09-17
    • 1970-01-01
    • 1970-01-01
    • 2014-03-14
    • 2017-12-20
    • 1970-01-01
    • 1970-01-01
    • 2021-04-08
    • 1970-01-01
    相关资源
    最近更新 更多