cassandra中的count(*)错误

时间:2014-08-04 14:56:29

标签: csv cassandra cassandra-2.0

将所谓的COMPANY表成功加载到Cassandra中。 (company.csv) 加载后,我收到消息“在1.999秒内导入394行”。

当我使用“SELECT COUNT(*)FROM COMPANY”计算它们时我只得到2排。

我试过放下桌子和放大器再次创造。甚至放弃了整个Keyspace&再次创建,但问题仍然存在。 对此有何解决方案?

2 个答案:

答案 0 :(得分:2)

Cassandra中的插入和更新是相同的,因此如果您的密钥有重复记录,它们将覆盖以前插入的数据。

实施例

Given Key (x)

x,y,z
1,1,1
1,2,2
1,3,3

Cassandra的唯一记录是

1,3,3 

因为其他记录会被覆盖。

答案 1 :(得分:1)

您的复制因素是什么?您指定的读取一致性是什么?如果您的复制因子是RF,则写入一致性为W且读取一致性为R,则R + W> RF将为您提供即时一致性。如果你的复制因子是3,W是1而R是1,那么很可能你正在写一个副本并从另一个副本中读取。

另一方面,您的主键是什么?它只是CompanyId(或类似的)然后SELECT COUNT(*)将是一个可怕的查询。如果您只有394家公司,那么为所有公司创建一个分区并将所有公司作为行可能会更好。在这种情况下,您的主键可能是:

Primary key (CompanyDummySameForAll int, CompanyId int)

这意味着所有公司都将存储在一个分区(ID为CompanyDummySameForAll的分区)中,所有其他公司数据都存储在该分区中的行中。然后,您可以通过以下方式查询:

SELECT COUNT(*) from TableName where CompanyDummySameForAll = 1;

它仍然不是一个好的查询(SELECT COUNT(*)并非一般),但它会更好。并且有394个参赛作品,应该没问题。