我正在尝试使用sstable2json实用程序将sstables转换为json。它工作正常,但对于计数器列,它提供了很长的字符串值。
我的create table语句: CREATE TABLE counters1 (价值柜台, 名称varchar, 姓氏varchar, PRIMARY KEY(姓名,姓氏) );
示例数据:
现在转换为json之后我得到的是:
[{“key”:“hari”, “cells”:[[“ram:value”,“0001800086d46a8fd6cb484e9257a02ddd14fe06000000000000000100000000000000000001”,1452867057744000,“c”, - 9223372036854775808]]}]
Q1)有没有办法从中获得有意义的价值? (0001800086d46a8fd6cb484e9257a02ddd14fe0600000000000000010000000000000001)
Q2) cassandra如何从同一个sstable读取并显示“1”
由于
答案 0 :(得分:3)
计数器在2.1中发生了很大变化,见http://www.datastax.com/dev/blog/whats-new-in-cassandra-2-1-a-better-implementation-of-counters。这也对2.0之前的计数器有很好的解释(你在看什么)。 sstable中的上下文主要由计数器id(timeuuid),分片逻辑时钟和分片值组成。 (16字节id,两个长)。这是什么显示在sstable2json中。标题中有更多内容描述了一些本地/全局元素索引。查看https://github.com/apache/cassandra/blob/cassandra-2.0/src/java/org/apache/cassandra/db/context/CounterContext.java#L675了解更多详情。
但我建议使用2.1计数器来避免一些问题并且更简单一点。尽管如此,从sstables手动构建你的计数器值将是非常重要的。