如何只使用CQL在Cassandra中获取行数?

时间:2016-06-09 19:09:57

标签: cassandra

我希望我们的开发人员能够告诉表中有多少行(大致)。

执行"从表格中选择计数(*)"没有工作,因为你得到一个超时错误,除非表非常小(不到一百万行)。

在〜/ .cassandra / cqlshrc中增加client_timeout对我们来说从来没有用过,即使这样做也许让开发人员对生产运行10分钟的查询可能不是一个好主意。 :)

由于这是一个生产集群,开发人员没有ssh访问服务器来运行" nodetool"本地服务器上。

运行" nodetool"远程需要启用远程JMX并应用JMX安全性。这似乎只是为了估计一个表格大小。是否有人可以使用JMX访问权限?

是否有任何其他选项可以对表格中的行数进行任何估计?

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以尝试将表导出到csv然后只执行csv的行计数。这不是理想的表现,但它不像计数那样超时。

#include <iostream>
#include <cstring>
using namespace std;

class Foo
{
    public:
        void set_name(char a[]);
        char get_name();

    private:
        char name[10];

};

int main()
{

    Foo bar;
    char a[10] = "Test";

    bar.set_name(a);

    cout << bar.get_name();


    return 0;
}

void Foo::set_name(char a[])
{
    strcpy(name, a);
}

char Foo::get_name()
{
    return name;
}

有关副本的详细信息,请参阅:creates a subclass

另一个,更多&#34;估计&#34;如果您正在运行数据存储cassandra,则选项是将OpsCenter安装到其中一个节点上,这将创建一个UI,您可以向具有大量有用指标和运行状况的开发人员公开。我不认为它直接有数字或行,但如果你知道这个数值,它确实有可以除以平均行数的数据量。

http://docs.datastax.com/en/cql/3.1/cql/cql_reference/copy_r.html

*编辑:我刚刚意识到上面的链接是针对OpsCenter的企业版,但确实包含了它的描述。还有(或至少是)社区版本。