【问题标题】:How to read the uuid4 objects in human readable format in cqlsh - cassandra如何在 cqlsh 中以人类可读格式读取 uuid4 对象 - cassandra
【发布时间】:2015-06-01 21:47:03
【问题描述】:

当我试图从 cassandra 中读取 uuid4 类型的列时,我得到了垃圾。有没有办法以人类可读的格式读取它(代表 uuid4 对象的十六进制字符串格式)

这是我得到的 -

cqlsh:upgradetest> select *  from "AccessControlLinks" where key =   'a471b42b-cb20-4ae2-b924-c79a5eec1bed-Filters';

key                                          |     column1                                           | value

a471b42b-cb20-4ae2-b924-c79a5eec1bed-Filters | G\xff\xbc\x01\xaadNp\xb6\xd9\xe2\xd9\x0e\xd1\xc5@ |      

是否需要设置任何 cqlsh 函数/一些标志才能以人类可读的格式获取 column1 的值?

提前致谢

马尼什

【问题讨论】:

  • 好吧,我找到了实现这一点的 python 方式,因为安迪的回答绝对正确。 human_readble_id = UUID(bytes=six.b(uuid_obj)) 你需要导入包 "six" 和 "UUID from uuid" 。我确信其他编程语言必须有类似的解决方法。

标签: cassandra cqlsh


【解决方案1】:

您遇到的问题是您使用的是紧凑型存储(旧表),因此您失去了 CQL 的好处,并且您的列值将只是 blob。

您使用紧凑型存储是否有原因?您是否仍在使用 thrift 进行数据传输,还是出于其他原因选择了紧凑型存储?

我不相信有一种简单的方法可以让您使用 cqlsh 读取非二进制格式的数据。

【讨论】:

    【解决方案2】:

    当 cassandra 中的数据为压缩格式时,没有简单的方法可以通过 cqlsh 读取 uuid 字符串。但是在 python 中有一个解决方法。只是提到人们是否面临同样的问题。

    这是如何做到的。转到 python 提示

    import uuid
    uuid.UUID(bytes='\xec\x84\x9e\xfd\x83\x83N6\x9b\xcd\xa4<{\x8a\xda\xd9')
    

    即将字符串从 cqlsh 传递给 uuid.UUID

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-03
      • 2014-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-02
      • 2019-08-07
      相关资源
      最近更新 更多