【问题标题】:Cassandra CQLSSTableWriter IssueCassandra CQLSSTableWriter 问题
【发布时间】:2017-09-15 15:25:47
【问题描述】:

在我们的生产环境中,我们使用 CQLSStablWriter 创建 SSTables 以供将来批量加载 Sample Gist。在创建 sstable 的过程之后。一旦我们启动 cassandra,我们就会遇到以下异常。我们所有的 CF 都是计数器列族。

2.1.5 和 2.0.8 试用版

Exception 1Exception 2

查代码发现ColumnFamily.javacellInternal的类型为BufferedCounterUpdateCell,不支持diff操作。在wrong type 上也调用了协调方法。

为了确认问题,我们确实使用了sstable2json 实用程序来检查数据。正如我们猜测的那样 正确转储的 sstable 的单元格具有有效的计数器

(":1:c05:desktop/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/","00010000db5ad3b00d4711e5b52dab7bf928868d00000000000000590000000000000059",1433835586985,"c",-9223372036854775808),
(":1:c05:*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/","00010000db5ad3b00d4711e5b52dab7bf928868d00000000000000590000000000000059",1433835586985,"c",-9223372036854775808)

而有故障的有缓冲计数器,因此 sstable2json 失败

("*:0:c01:*/direct/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/","0000000000000001",1433924262793),
("*:0:c01:*/*/singapore/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/","0000000000000002",1433924262793),

基本上sstable2jsondoesn't have support 用于转储BufferedCounterUpdateCells,因此它假定这些单元格是正常类型并转储它们。

从错误日志和sstable2json 输出中可以明显看出,CQLSSTableWriter 不是转储 CounterColumns,而是转储了 Counter Update Columnscounter types with a different mask,这导致了错误,而 cassandra 尝试加载带有此类列的 SSTables。

我们看到这个问题总是在通过 CQLSSTableWriter 创建 SSTable 时发生。

在处理同一张纸条上报告的任何问题时,我们在this 上停滞不前。与切换 CF 进行写作有关的事情。我们猜测问题可能在同一条线上。欢迎任何意见。

----更新 在进一步调试中,我们发现 CQLSSTableWriter 无法将 CounterUpdateColumns 转换为 CounterColumns,因为它通常在所有其他情况下完成 row mutations。可能需要补丁

【问题讨论】:

    标签: cassandra cql nosql


    【解决方案1】:

    CQLSStableWriter 不支持计数器。请参阅https://issues.apache.org/jira/browse/CASSANDRA-10258 了解更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-10
      • 1970-01-01
      • 2018-12-18
      • 2011-09-28
      • 2019-01-14
      • 2015-03-26
      • 2013-05-12
      • 2017-03-24
      相关资源
      最近更新 更多