我是Cassandra的新手,有以下问题:
我有一个7节点的cassandra(v2.0.11)集群和一个有10k行的表。我运行一个hadoop作业(datanodes当然驻留在cassandra节点上),从该表中读取数据,我看到只有7k行被读取到map阶段。
我查过了 CqlInputFormat
源代码,并注意到cql查询用于选择节点本地日期,还添加了limit子句(默认为1k)。因此7k读取行可以解释为: 7 nodes * 1k limit = 7k rows read total
可以使用更改限制 CqlConfigHelper
:
CqlConfigHelper.setInputCQLPageRowSize(job.getConfiguration(), "1000");
请帮助我回答以下问题:
这是你想要的行为吗?
为什么? CqlInputFormat
不分页浏览其余行吗?
这是一个错误还是我应该增加 InputCQLPageRowSize
价值?
如果我想读取表中的所有数据,但不知道行数怎么办?
1条答案
按热度按时间svdrlsy41#
我的问题与cassandra 2.0.11中的一个bug有关,该bug在底层cql查询运行中添加了一个奇怪的限制子句,以将数据读取到Map任务:
我把这个问题发到了Cassandra·吉拉:https://issues.apache.org/jira/browse/cassandra-9074
事实证明,该问题与cassandra 2.0.12中修复的以下错误密切相关:https://issues.apache.org/jira/browse/cassandra-8166