Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从大数据集读取Cassandra_Cassandra_Datastax - Fatal编程技术网

从大数据集读取Cassandra

从大数据集读取Cassandra,cassandra,datastax,Cassandra,Datastax,我需要从卡桑德拉的一个非常大的数据集中得到一个计数,超过1亿。我担心如果我只是运行下面的查询,cassandra会占用多少内存 从conv_org中选择count(*),其中org_id='TEST_org' 有人告诉我可以用卡桑德拉自动寻呼来做这个?这似乎是一个好的选择吗 语法是这样的吗 Statement stmt = new SimpleStatement("select count(*) from conv_org where org_id = 'TEST_ORG'"); stmt.se

我需要从卡桑德拉的一个非常大的数据集中得到一个计数,超过1亿。我担心如果我只是运行下面的查询,cassandra会占用多少内存

从conv_org中选择count(*),其中org_id='TEST_org'

有人告诉我可以用卡桑德拉自动寻呼来做这个?这似乎是一个好的选择吗

语法是这样的吗

Statement stmt = new SimpleStatement("select count(*) from conv_org where org_id = 'TEST_ORG'");
stmt.setFetchSize(1000);
ResultSet rs = session.execute(stmt);
我不确定上述代码将工作,因为我不需要一个结果集,我只需要一个计数

这是数据模型

CREATE TABLE ts.conv_org (
   org_id text,
   create_time timestamp,
   test_id text,
   org_type int,
   PRIMARY KEY (org_id, create_time, conv_id)
)

如果
org\u id
不是您的主键,那么cassandra中的主键计数通常不是一个快速操作,很容易导致对集群中的所有sstable进行完全扫描,因此速度非常慢

例如,在Java中,您可以执行以下操作:

   ResultSet rs = session.execute(...);
   Iterator<Row> iter = rs.iterator();
   while (iter.hasNext()) {
       if (rs.getAvailableWithoutFetching() == 100 && !rs.isFullyFetched())
           rs.fetchMoreResults();
       Row row = iter.next()
       ... process the row ...
   }
ResultSet rs=session.execute(…);
迭代器iter=rs.Iterator();
while(iter.hasNext()){
如果(rs.getAvailableWithoutFetching()==100&&!rs.isFullyFetched())
rs.fetchmoresults();
行=iter.next()
…处理该行。。。
}

你可以选择一个小柱,数一数你自己。有
int-getAvailableWithoutFetching()
isFullyFetched()
可以帮助您

一般来说,如果你真的需要一个计数-自己维护它

另一方面,如果在一个分区中有很多行,那么还可能存在其他一些性能问题

但如果不知道数据模型,这很难说

除了数据集之外,您可能还想使用“计数器表”

优点:快速反击

缺点:需要维护该表

参考:

我添加了数据模型,组织id是主键的一部分。你知道我应该把取回大小设置成什么吗?