2015-06-08 127 views
1

任何人都可以向我解释Cassandra 2.1.15 WordCount示例中的以下几行?Cassandra WordCount Hadoop

CqlConfigHelper.setInputCQLPageRowSize(job.getConfiguration(), "3"); 
CqlConfigHelper.setInputCql(job.getConfiguration(), "select * from " + COLUMN_FAMILY + " where token(id) > ? and token(id) <= ? allow filtering"); 

如何定义将用于替换“?”的具体值?在查询中?

什么是页面行大小?

回答

2

如何定义将用于替换“?”的具体值?在 查询?

你不知道。这些参数化值由输入格式创建的拆分设置。它们被自动设置,但可以通过调整分割大小来调整(到一定程度)。

什么是页面行大小?

页面行大小决定了执行期间映射器在单个请求中检索到的CQL行数。如果C *分区包含10000个CQL行并且页面行大小设置为1000,则需要10次请求才能检索所有数据。

+0

谢谢你的回答,先生,这是非常好的。但是,如何通过他们的关键字来定义我想要哪些行作为输入?我尝试了一些类似于“select * from basketball where team ='lakers'allow filtering”,但我得到以下异常 - 绑定变量的数量无效。我想选择所有以'湖人'为名的行,怎么做? 另外,关于第二部分,这是否意味着我隐式定义了Mappers的数量?如果我有10个请求,是否意味着将创建10个地图任务? – Marko

+0

输入格式采用整个C *标记范围,并根据输入拆分大小对其进行分割。这使得一些分裂。每个分裂执行一个查询与两个变量,开始令牌和结束令牌。这就是为什么它要求你总是在你的查询中有2个变量。对于你的“湖人”查询,你只需要添加类似于token(partitionkeyname)>的地方。和令牌(partitionkeynameid)<=?。 – RussS

+0

你能重新考虑我的问题吗?下面的查询不会起作用“select * from basketball.nba where team ='lakers'and token(team)>?and token(team)<=?”,我想我误解了一些东西? – Marko