当我尝试从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
答案 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