2017-09-07 131 views
1

我試圖使用spark + spark-cassandra-connector將一張桌子複製到另一張桌子,花費很多時間(〜17小時)。即使對於所有行(~2億)的簡單計數,我也花費了大約1個小時。 我如何加快這個過程? 卡桑德拉版本:3.1使用Spark + Cassandra處理一張桌子到另一張桌子的低性能

object Init { 
    def main(args: Array[String]): Unit = { 
    val sparkConf = new SparkConf(true) 
     .set("spark.cassandra.connection.host", "host") 
//  .set("spark.cassandra.input.split.size_in_mb", "16") 
//  .set("spark.executor.memory", "4g") 
     .setAppName("spark2Cassandra") 
     .setMaster("local[*]") 

    val sparkContext = new SparkContext(sparkConf) 

    val table = sparkContext.cassandraTable("testkeyspace", "test_5") 
    table.saveToCassandra("testkeyspace", "test_4") 
    } 
} 

回答

2

我看你正在使用你的應用程序星火「本地」模式。這意味着你正在一臺機器上運行你的應用程序。這通常意味着你不需要Spark。爲了提高性能,我會考慮增加更多的節點(所以更多的客戶端會在行動中)。

如果您仍然有問題,最好嘗試確定您的系統的實際瓶頸,然後嘗試擴大。目前,問題可能在於您使用的是單臺計算機。

+1

就像我說過,它可能依賴於很多事情,你需要真正看看你的OS指標來確定瓶頸。 – RussS