如何在cqlsh - cassandra中以人类可读的格式阅读uuid4对象

时间:2015-04-01 05:11:04

标签: cassandra cqlsh

当我尝试从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的值?

先谢谢

和Manish

2 个答案:

答案 0 :(得分:2)

您遇到的问题是您正在使用紧凑型存储(节约表),因此您将失去CQL的优势,而您的列值将只是blob。

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

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

答案 1 :(得分:0)

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

以下是如何做到的。转到python promt

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

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