如何在 cqlsh - cassandra 中读取人类可读格式的 uuid4 对象
How to read the uuid4 objects in human readable format in cqlsh - cassandra
当我尝试从 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 的值?
提前致谢
马尼什
您遇到的问题是您使用的是紧凑型存储(thrift 表),因此您失去了 CQL 的优势,并且您的列值将只是 blob。
您使用压缩存储有什么原因吗?您仍在使用 thrift 进行数据传输,还是出于其他原因选择紧凑型存储?
我不相信会有一种简单的方法可以让您使用 cqlsh 读取非二进制格式的数据。
当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
当我尝试从 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 的值?
提前致谢
马尼什
您遇到的问题是您使用的是紧凑型存储(thrift 表),因此您失去了 CQL 的优势,并且您的列值将只是 blob。
您使用压缩存储有什么原因吗?您仍在使用 thrift 进行数据传输,还是出于其他原因选择紧凑型存储?
我不相信会有一种简单的方法可以让您使用 cqlsh 读取非二进制格式的数据。
当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