我正在尝试从cassandra表的sstable2json转储中恢复时间戳以进行批处理。表模式如下所示:
CREATE TABLE actions (
userid text,
action text,
ts timestamp,
PRIMARY KEY (userid, ts)
) WITH CLUSTERING ORDER BY (ts DESC);
特定用户的sstable2json转储看起来像这样:
{"key": "HEX_VALUE_OF_USERID","columns": [["2013-07-10 19\\:25\\:44+0000:","",1373484344552000], ["2013-07-10 19\\:44\\:11+0000:action","blog",1373484344552000]]},
当我在数据库中查找相同的用户详细信息时,从转储中恢复的日期时间(“2013-07-10 19:25:44 + 0000”),我找不到匹配的记录。但是,我可以通过使用具有恢复的日期时间(+/- 1秒)的范围查询来查找匹配记录。是否有可能以某种方式恢复实际的ts(我猜是毫秒)?附加到行的其他时间戳不一致(可以与ts相差几毫秒)。我使用的是cassandra 1.2.6,并且不存在辅助列。
答案 0 :(得分:2)
回答我自己的问题:
问题在于JdbcDate格式(iso格式)。没有可用的格式似乎提供ms。修复是为ms添加一个新的日期格式(将.SSS添加到默认值),并将更新的格式设置为默认格式 - 这样可以恢复ms。