2015-06-08 106 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