2014-05-16 43 views
1

我使用豬加載使用CqlStorage從卡桑德拉數據。我有4個數據節點,每個節點可以有7個映射器,在Cassandra中有大約3000萬個數據。當我運行像這樣增加映射器在豬

LOAD 'cql://keyspace/columnfamily' using CqlStorage需要27名映射器來運行。

但是,如果我給where子句中負載的功能就像

LOAD 'cql://keyspace/columnfamily?where_clause=id%3D100' using CqlStorage總是需要一個映射。

任何一個可以幫助我從你在那裏同樣的地圖輸入條款只會是一個關鍵的增長映射

+0

[在Hadoop中更改文件拆分大小]的可能重複(http://stackoverflow.com/questions/9678180/change-file-split-size-in-hadoop) –

+0

這是專門針對具有where子句的CqlStorage,儘管我試圖改變分割大小,但仍然只有一個映射器。 **注:只有在我包括where條款的情況下。** – Shri

回答

0

它看起來,這將是爲什麼你只能得到一個映射。 Hadoop將根據輸入鍵的數量分配映射器。如果您只有一個輸入鍵,則其他映射器將不會執行任何操作。

底線是,如果你在WHERE子句中指定分區鍵,你會得到一個映射器(因爲這是它的方式被分配)。根據我的評論,我認爲你不僅僅爲一名學生做分析,所以你沒有理由指定分區密鑰。您似乎也沒有任何對二級索引有意義的列。所以我不確定爲什麼你甚至有一個where子句。

看起來從你的數據模型一樣,你必須在映射所有的數據獲得總成績與學生和時間範圍的組合。有可能您可以更改爲時間序列數據模型並在where子句中成功篩選,但您當前的模型不支持這一點。

+0

可能是這種情況。你可以請我建議我可以使用哪種API來做到這一點,我的意思是通過過濾某些條件從卡桑德拉讀取數據,這樣我就不會給豬多少負擔。 – Shri

+0

你能提供一些關於你想要做什麼的細節嗎? –

+0

感謝您的回覆。我想從Cassandra加載數據並通過豬進行處理並將其轉儲到HDFS。爲此,我使用CqlStorage。但在這裏我不想從Cassandra加載所有的數據,我的標準就像加載一個月或兩個月的數據,這樣我就不會給豬處理重負載,但在CqlStorage中有過濾器(where子句)的樣子像不工作https://issues.apache.org/jira/browse/CASSANDRA-6151。所以我要求提供任何其他解決方案的建議。 – Shri