2013-10-24 237 views
4

我一直在使用豬用我的卡珊德拉數據做各種分組的驚人的技藝,這將是幾乎不可能勢在必行寫的DataStax的裂縫控制。我正在使用DataStax整合Hadoop & Cassandra,我不得不說它非常令人印象深刻。給那些傢伙打帽子!豬和卡桑德拉和

我在那裏,我把這個系統將向您介紹一些測試一個非常小的沙箱簇(2節點)。我有了〜53M行(約350個字節EA)一CQL表,我注意到映射後需要很長的時間來磨通這些53M行。我開始在日誌周圍戳,並且我可以看到地圖反覆出現溢出(我從映射程序中看到了177次溢出),我認爲這是問題的一部分。

CassandraInputFormat和JobConfig的組合僅生成單個映射器,所以這個映射器具有讀取來自表中的行的100%。我把這種反並聯 :)

現在,也有在工作中有很多的齒輪在這張照片,其中包括:

  • 2物理節點
  • Hadoop的節點在「Analytics(分析) 「DC(默認配置),但實際在同一個機架中。
  • 我可以用LOCAL_QUORUM
  • 看到作業

任何人能指出我如何讓​​豬創造更多的輸入拆分的方向,所以我可以運行更多映射器?我有23個插槽;似乎只能一直使用一個可惜。

或者,我是不是完全瘋了,不明白的問題?我歡迎這兩種答案!

回答

0

您可以設置cassandra.input.split.size的東西小於64K這是默認的拆分大小,這樣你就可以得到更多的分裂。 Cql表每個節點有多少行?你可以發佈你的表格模式嗎?

附加split_size到url PARAMATERS

對於CassandraStorage使用下面的參數 卡桑德拉:// [用戶名:密碼@]/[slice_start = & slice_end = [&反轉=真] [&極限= 1? ] [& allow_deletes =真] [& widerows =真] [& use_secondary =真] [&比較=] [& split_size =] [&分區=] [& init_address =] [& rpc_port =]]

對於CqlStorage使用下面的參數 CQL://?[用戶名:密碼@]/[[PAGE_SIZE =] [&列=] [& output_query =] [& where_clause =] [& split_size =] [&分割=] [& use_secondary =真|​​虛假] [& init_address =] [& rpc_port =]

+0

嗨!這裏是表格:

 'CREATE TABLE events ( id uuid PRIMARY KEY, body text, eventname text, marshaledclass text, time timestamp ) WITH bloom_filter_fp_chance=0.010000 AND caching='KEYS_ONLY' AND comment='' AND dclocal_read_repair_chance=0.000000 AND gc_grace_seconds=864000 AND read_repair_chance=0.100000 AND replicate_on_write='true' AND populate_io_cache_on_flush='false' AND compaction={'class': 'SizeTieredCompactionStrategy'} AND compression={'sstable_compression': 'SnappyCompressor'};' 
hughj

+1

我試着(靜脈)重寫'cassandra.input.split.size'爲64k值以外的東西,但似乎沒有改變它。我甚至將它添加到mapred-site.xml,但它仍然沒有改變。我也試圖從豬腳本中覆蓋,但仍然沒有運氣。 – hughj

+1

嗨,我也面臨同樣的問題,你是怎麼解決這個問題的? – sudheer

2

你應該設置pig.noSplitCombination = true。你可以在三個地方中的一個地方做到這一點。

當調用腳本:

dse pig -Dpig.noSplitCombination=true /path/to/script.pig 

在豬腳本本身:

SET pig.noSplitCombination true 
table = LOAD 'cfs://ks/cf' USING CqlStorage(); 
/etc/dse/pig/pig.properties

或永久。取消註釋:

pig.noSplitCombination=true 

否則,豬可以設置你的總輸入路徑(組合)來處理:1.

+1

添加'SET pig.noSplitCombination true '爲我做了竅門。謝謝! – m2h

+0

'SET pig.noSplitCombination true'對我有效,同時使用'LOAD'cfs:// ks/cf'USING CqlStorage();',但是如果我使用load這樣的函數, LOAD'cfs:// ks/cf?where_clause = x%3D3'使用CqlStorage();'它總是隻需要一個映射器。有什麼想法? – Shri

+0

@Shri沒有關於模式的更多信息很難說,但它是可能的你是narro的數據翅膀與where_clause一起被包含在一個單獨的分割中。 – nate

0

設置pig.noSplitCombination =真把我帶到了另一個極端端 - 使用此標誌我開始769地圖任務