Cassandra CQLSSTableWriter问题

时间:2015-06-16 12:28:23

标签: cassandra cql nosql

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

版本已尝试2.1.5和2.0.8

Exception 1Exception 2

在查找代码时,我们发现在ColumnFamily.java中,cellInternal的类型为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),

基本上sstable2json doesn't have support用于转储BufferedCounterUpdateCells,因此它假设这些单元格是普通类型并转储它们。

从错误日志和sstable2json输出中可以明显看出,CQLSSTableWriter不是转储CounterColumns,而是转储了计数器更新列counter types with a different mask,这导致错误,而cassandra尝试使用此类列加载SSTables。

当通过CQLSSTableWriter创建SSTable时,我们总会看到此问题。

在查看同一笔记中报告的任何问题时,我们在this停滞不前。与切换CFs以进行写入有关的事情。我们猜测问题可能在同一条线上。欢迎提出任何意见。

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

1 个答案:

答案 0 :(得分:1)

CQLSStableWriter不支持计数器。有关详细信息,请参阅https://issues.apache.org/jira/browse/CASSANDRA-10258