2015-04-03 108 views
2

重新分區CassandraRDD我使用三個節點的卡桑德拉集羣六星火工人,每個人都有1核心2GB內存。 使用Spark應用程序,我試圖從卡桑德拉表中獲取超過300k行的整個數據,並嘗試做一些聚合。如何在Apache的星火

但是從Cassandra獲取數據需要花費很多時間。我也經歷了Spark UI,我看到Spark階段有3個分區,其中兩個執行得非常快(在幾秒鐘內),而第三個執行很長時間(7分鐘)。

而且我還試圖重新分配CassandraRDD以增加任務數量並將任務分配給所有六名工人,但沒有找到任何解決方案。

回答

1

要調整由CassandraRDD創建的任務數量,您需要調整spark.cassandra.input.split.size。這決定了將要生成多少個實際的Spark分區。

spark.cassandra.input.split.size approx number of Cassandra partitions in a Spark partition 100000 

請注意,這將控制Spark分區中C *分區的數量,而不是C *行。這也是一個估計,所以你不能保證這個確切數量的標記將在一個火花分區中。

如果您繼續看到某些分區的行爲比其他分區慢,我會調查該分區的節點健康狀況並檢查熱點。

+1

我已經設置了這個--conf spark.cassandra.input.split.size_in_mb = 32,仍然我所有的數據大約250 MB是加載在一個執行器(約400萬條記錄) – Nipun 2015-09-25 07:12:03

+0

請參閱此http:// stackoverflow .COM /問題/ 32775696 /重新分區-的-數據幀中,火花呢 - 不工作 – Nipun 2015-09-25 07:22:35