我是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
值?
如果我想读取表中的所有数据并且不知道行数,该怎么办?
答案 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