【问题标题】:count(*) error in cassandracassandra 中的计数(*)错误
【发布时间】:2014-09-27 02:23:29
【问题描述】:

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

当我使用“SELECT COUNT(*) FROM COMPANY;”计算它们时我只有 2 行。

我已尝试删除表格并再次创建。甚至删除了整个 Keyspace & Created ,但问题仍然存在。 有什么解决办法吗?

【问题讨论】:

  • 请分享您的表(列族)定义和几行输入。这可能就像@RussS 所描述的那样,这个信息应该会显示出来。

标签: csv cassandra cassandra-2.0


【解决方案1】:

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

例子

Given Key (x)

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

Cassandra 中唯一的记录是

1,3,3 

因为其他记录会被覆盖。

【讨论】:

    【解决方案2】:

    您的复制因子是多少?您指定的读取一致性是什么?如果你的复制因子是 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 个条目,应该没问题。

    【讨论】:

      猜你喜欢
      • 2012-02-06
      • 2016-01-14
      • 2017-07-29
      • 2019-04-16
      • 2017-05-13
      • 2016-09-04
      • 2018-01-05
      • 2018-04-06
      • 2017-08-28
      相关资源
      最近更新 更多