Cassandra查询结果有所不同

时间:2019-10-23 14:37:59

标签: cassandra centos

我有一个4节点2直流cassandra群集,在那里我面临着无法解释的行为。

dc1-节点1,节点2,节点3。

dc2-节点4。

在我的数据库中,我有columnFamily1,其复制因子为dc1:2 dc2:1。列族包含28列,主键中有11列。我从包含100%数据的dc2中查询node4。因此,问题是:

“从columnFamily中选择*”将返回5103条记录。

“从columnFamily中选择(primaryKey中的任何列)”返回733条记录。

如果我将columnFamily导出为CSV,然后导入到截断的表中,则问题消失了。谁能解释,这怎么可能?有没有不将columnFamily截断的解决方案?

1 个答案:

答案 0 :(得分:0)

因此,从您的上述声明看来,撇开注释(关于“拥有100%数据的节点的部分”)不谈,您必须遇到一些一致性问题。使用一致性一时,将查询一个节点的详细信息。哪个节点可以是其中任何一个。您执行“ *”或“主键中的任何列”这一事实无关紧要,但是每次您运行查询时,都可以为结果获得一个不同的节点。如果使用的是CQLSH,则可以尝试一次登录到每个节点,将一致性设置为LOCAL_ONE并运行“ select ”或“ select count()”,然后查看结果你得到。我猜这会有所不同。截断表并重新装入表后,可以清除一致性问题。您可能要做的另一种方法是对色谱柱系列进行修复,然后重试实验。您如何导出数据?您是否使用了CQLSH COPY命令?如果是这样,那将查询所有节点的数据。您是否计算了CSV中的行数?如果是这样,它是否与查询本身的任何计数匹配?