删除Cassandra列的WRITETIME

时间:2016-02-02 01:20:40

标签: cassandra

背景

因此,机器的日期时间错误配置为2017年(而非2016年),而Cassandra则运行了一天。更正日期时间后,许多字段的WRITETIME仍然是2017,并且所有INSERT / UPDATE都将无声地失败。

问题:

有没有办法删除/清除WRITETIME?或者更好的是,修复整个数据库?

1 个答案:

答案 0 :(得分:1)

你正面临着写作障碍"问题。 3种可能的解决方案:

  1. 删除您的数据库并从头开始重建,强力解决方案,如果您没有备份数据,不推荐
  2. 使用var fileName = @"C:\temp\troublecall.txt"; FileStream s = new FileStream(fileName, FileMode.Create); List<TroubleCall> tcs = new List<TroubleCall>(); foreach (var tc in troubleCalls) { tcs.Add(tc); } BinaryFormatter f = new BinaryFormatter(); f.Serialize(s, tcs); s.Close(); 将数据文件转换为JSON,修复时间戳并使用sstable2json重新创建后台数据文件。解析时间戳可能会花费大量时间和精力
  3. 使用Apache Spark从当前表中读取并写入新表(同名)但在不同的键空间中。请查看此源代码示例:https://github.com/doanduyhai/Cassandra-Spark-Demo/blob/master/src/main/scala/usecases/MigrateAlbumsData.scala#L58-L60