Hadoop Cassandra CqlInputFormat分页

时间:2015-03-23 00:23:12

标签: hadoop cassandra cassandra-2.0

我是Cassandra的新手并且有以下问题:

我有一个7节点的Cassandra(v2.0.11)集群和一个包含10k行的表。 我运行一个hadoop作业(datanodes当然驻留在cassandra节点上)从该表读取数据,我看到只有7k行被读取以映射相位。

我检查了CqlInputFormat源代码并注意到构建了一个CQL查询以选择节点本地日期,并且还添加了LIMIT子句(默认为1k)。因此可以解释7k读取行:
7 nodes * 1k limit = 7k rows read total

可以使用CqlConfigHelper更改限制:

CqlConfigHelper.setInputCQLPageRowSize(job.getConfiguration(), "1000");

请帮助我解决以下问题:
这是一个理想的行为吗?
为什么CqlInputFormat不会翻页其余行?
这是一个错误还是我应该增加InputCQLPageRowSize值?
如果我想读取表中的所有数据并且不知道行数,该怎么办?

1 个答案:

答案 0 :(得分:0)

我的问题与cassandra 2.0.11中的一个错误相关,该错误在底层CQL查询运行中添加了一个奇怪的LIMIT子句以将数据读取到地图任务:

我已将该问题发布到cassandra jira:https://issues.apache.org/jira/browse/CASSANDRA-9074

事实证明,该问题与cassandra 2.0.12中修复的以下错误严重相关:https://issues.apache.org/jira/browse/CASSANDRA-8166