Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从cassandra sstable2json恢复日期_Cassandra_Unix Timestamp_Cql_Cql3 - Fatal编程技术网

从cassandra sstable2json恢复日期

从cassandra sstable2json恢复日期,cassandra,unix-timestamp,cql,cql3,Cassandra,Unix Timestamp,Cql,Cql3,我试图从cassandra表的sstable2json转储中恢复时间戳以进行批处理。表架构如下所示: CREATE TABLE actions ( userid text, action text, ts timestamp, PRIMARY KEY (userid, ts) ) WITH CLUSTERING ORDER BY (ts DESC); {"key": "HEX_VALUE_OF_USERID","columns": [["2013-07-10 19\\:25\\:44+000

我试图从cassandra表的sstable2json转储中恢复时间戳以进行批处理。表架构如下所示:

CREATE TABLE actions  (
userid text,
action text,
ts timestamp,
PRIMARY KEY (userid, ts)
) WITH CLUSTERING ORDER BY (ts DESC);
{"key": "HEX_VALUE_OF_USERID","columns": [["2013-07-10 19\\:25\\:44+0000:","",1373484344552000], ["2013-07-10 19\\:44\\:11+0000:action","blog",1373484344552000]]},
特定用户的sstable2json转储如下所示:

CREATE TABLE actions  (
userid text,
action text,
ts timestamp,
PRIMARY KEY (userid, ts)
) WITH CLUSTERING ORDER BY (ts DESC);
{"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,没有第二列。

回答我自己的问题:


问题在于JdbcDate格式(iso格式)。所有可用的格式似乎都没有提供ms。解决方案是为date with ms添加一种新格式(将.SSS添加到默认值),并将更新后的格式作为默认值-这启用了ms的恢复。

您的ts列是否有二级索引,您如何插入时间戳以及您使用的cassandra的确切版本?