Cassandra 验证批量导入
Cassandra Verifying Bulk Import
我有一个 Cassandra 集群和 运行 5 个节点。
我用 replication_factor=3 创建了一个键空间,并在其中创建了一个 table。
我使用 cqlsh
将 CSV 批量加载到我的 table。
我在加载后收到此消息:
355637 rows imported from 1 file
但是,当我使用 cqlsh
连接到集群并执行
select count(*) from my_keyspaces.my_table;
我只得到
count
--------
122715
我的架构设置方式实际上只有 6 行(每个设备一行),使用 Cassandra 的宽行。
但是,cqlsh
将这些显示为行以使生活更轻松。
我的问题是,为什么 count(*)
不是 return 一个准确的数字,而且,为什么 return 非常接近我的 1/3
预期数量?
您很有可能不小心更新了。如果 CSV 中有多行具有相同的主键,就会发生这种情况。
除了@brandon 回复(在大多数情况下都是正确的),您还可以在查询中设置上限,例如 select count(*) from cf limit 1000000 或使用 nodetool cfstats 获取更多信息。
我有一个 Cassandra 集群和 运行 5 个节点。
我用 replication_factor=3 创建了一个键空间,并在其中创建了一个 table。
我使用 cqlsh
将 CSV 批量加载到我的 table。
我在加载后收到此消息:
355637 rows imported from 1 file
但是,当我使用 cqlsh
连接到集群并执行
select count(*) from my_keyspaces.my_table;
我只得到
count
--------
122715
我的架构设置方式实际上只有 6 行(每个设备一行),使用 Cassandra 的宽行。
但是,cqlsh
将这些显示为行以使生活更轻松。
我的问题是,为什么 count(*)
不是 return 一个准确的数字,而且,为什么 return 非常接近我的 1/3
预期数量?
您很有可能不小心更新了。如果 CSV 中有多行具有相同的主键,就会发生这种情况。
除了@brandon 回复(在大多数情况下都是正确的),您还可以在查询中设置上限,例如 select count(*) from cf limit 1000000 或使用 nodetool cfstats 获取更多信息。