gpt4 book ai didi

java - Cassandra LongType 列名转字符串问题

转载 作者:行者123 更新时间:2023-11-30 04:36:03 24 4
gpt4 key购买 nike

我正在使用 java 和 cassandra thrift 从比较器为 LongType 的列族中获取行键。

这是我正在使用的代码:

for (ColumnOrSuperColumn column : slice) {
Column col = column.getColumn();
System.out.println("Column Name: " + new String(col.name.array()));
System.out.println("Column Name: " + new String(col.name.array(), "UTF-8"));
System.out.println("Column Name: " + new String(col.getName(), "UTF-8" ) );
}

sliceColumnOrSuperColumn 对象的列表,它保存从 ColumnFamily 检索的数据。

问题是没有一个 print 语句将长列名打印为字符串。我希望这些长值作为字符串来创建 json 语句。我这里错了什么?还有其他方法可以得到预期的输出吗?

Cassandra 版本:1.1.0

最佳答案

由于比较器是LongType,所以col.name.array()的内容是long(8字节),而不是字符串。

所以你需要一个方法将8字节转换为long。由于 thrift 在底层使用 ByteBuffer,因此最简单的方法是使用:

System.out.println("Column name: " + col.name.getLong(0));

但请注意,这通常是建议不要直接使用 thrift API 而是使用更高级别的客户端来正确反序列化类型的原因。

关于java - Cassandra LongType 列名转字符串问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13506938/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com