1

我使用:如何在從Cassandra讀取數據時控制分區數量?

  1. 卡桑德拉2.1.12 - 3節點
  2. 火花1.6 - 3節點
  3. 火花卡桑德拉連接器1.6

我使用卡桑德拉(未的vnode)令牌。

我正在寫一個從卡桑德拉表讀取數據的簡單工作,並且顯示它的計數表有大約7000萬行,它需要15分鐘。

當我正在讀取數據並檢查RDD的分區數是在21000左右的某個地方太大。如何控制這個數字?

我試過splitCount,split.size.in.mbs但他們顯示了相同數量的分區。

有什麼建議嗎?

import org.apache.spark.{SparkContext, SparkConf} 
import com.datastax.spark.connector._ 
import org.apache.spark.sql.cassandra.CassandraSQLContext 
import org.apache.spark.sql.cassandra._ 
import org.apache.spark.sql 
import java.sql.DriverManager 
import java.sql.Connection 


object Hi { 
    def main(args: Array[String]) 
    { 
    val conf = new SparkConf(true).set("spark.cassandra.connection.host", "172.16.4.196").set("spark.cassandra.input.split.size_in_mb","64") 
    val sc = new SparkContext(conf) 

    val rdd = sc.cassandraTable("cw","usedcareventsbydatecookienew") 
    println("hello world" + rdd.partitions) 
    println("hello world" + rdd.count) 
    } 

}

這是我的參考代碼。 我運行nodetool壓縮現在我能夠控制分區數量,但仍然整個過程需要近6分鐘,這是我認爲是太高任何改進建議

回答

3

你在尋找spark.cassandra.input.split.size

spark.cassandra.input.split.size 默認= 64近似的行中的單個火花分區號。值越高,創建的Spark任務就越少。增加太多的值可能會限制並行性水平。

+0

根據這個我應該有大約只有70個分區我的問題就解決了但它顯示了我21000分區和spark.cassandra.input.split.size_in_mb也是這樣做,我希望 – deenbandhu

0

當我在我的卡桑德拉表上運行compact命令,現在我能夠使用spark.cassandra.input.split.size參數來控制它

相關問題