Cassandra 卡桑德拉CqlstableWriter发行

Cassandra 卡桑德拉CqlstableWriter发行,cassandra,cql,nosql,Cassandra,Cql,Nosql,在我们的生产环境中,我们使用创建SSTables以用于将来的批量加载。在sstable创建过程之后。一旦我们启动cassandra,我们会遇到以下异常。我们所有的CFs都是计数器列系列 版本尝试了2.1.5和2.0.8 及 在查找代码时,我们发现,cellInternal的类型为BufferedCounterUpdateCell,其操作不受支持。此外,还对调用了协调方法 为了确认这个问题,我们确实使用了sstable2json实用程序来检查数据。正如我们猜测的那样 正确转储的sstable的单元

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

版本尝试了2.1.5和2.0.8

在查找代码时,我们发现,
cellInternal
的类型为
BufferedCounterUpdateCell
,其操作不受支持。此外,还对调用了协调方法

为了确认这个问题,我们确实使用了
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
用于转储BufferedCounterUpdateCells,因此它假定此类单元格为正常类型并转储它们

从错误日志和
sstable2json
输出中可以明显看出,CqlstableWriter没有转储计数器列,而是转储了计数器更新列,这导致了错误,而cassandra试图加载带有此类列的sstable

当通过CQLSTABLEWRITER创建SSTable时,我们经常看到这个问题

在处理同一条记录中报告的任何问题时,我们继续拖延。与转换CFs进行写作相关的事情。我们猜问题可能在同一条线上。欢迎任何意见

----更新
在进一步的调试中,我们发现CQLSTABLEWRITER无法将CounterUpdateColumns转换为CounterColumns,这在所有其他情况下通常都是如此。可能需要修补程序

CQLSTABLEWRITER不支持计数器。有关更多信息,请参阅