从Cassandra加载数据

时间:2014-03-24 08:52:24

标签: hadoop cassandra bigdata

我正在使用Cassandra 1.2.12,我想使用Java代码从cassandra加载数据,但我不得不在查询中使用限制。

使用DataStax API从Cassandra获取数据。

让我们假设keyspace as 'k'columnfamily as 'c',在某些条件下从c读取数据,这会导致1000万条记录,因为我得到time-out exception我将它限制为10000,{{1我想加载完整的1000万条记录,我该如何解决这个问题。?

2 个答案:

答案 0 :(得分:1)

您所询问的内容称为分页,您必须使用WHERE key > [some_value]编写查询,以便为要返回的每个切片设置起始边界。要获得正确的值,您需要查看上一个切片返回的最后一行。

如果您不处理数字,可以使用函数token()进行范围检查,例如:

SELECT * FROM c WHERE token(name) > token('bob')
如果您通过分区键进行分页,则可能还需要

token(),这通常会禁止切片查询。例如(改编自Datastax documentation):

CREATE TABLE c (
  k int PRIMARY KEY,
  v1 int,
  v2 int
);

SELECT * FROM c WHERE token(k) > token(42);

答案 1 :(得分:0)

从Cassandra加载所有数据不是一个好选择。使用Kundera(支持datastax java驱动程序),我知道可以将maxResults设置为Integer.MAX_VALUE,这将在检索数据时排除LIMIT关键字。

正如丹尼尔所说,你可能正在寻找的是“分页”,使用token()函数并以编程方式处理每页的记录数。恕我直言,高级别的apis应该注意在需要分页的情况下隐式应用令牌。

HTH, -Vivek