簡體   English   中英

從Cassandra讀取數據時如何控制分區數?

[英]How to control number of partition while reading data from Cassandra?

我用:

  1. cassandra 2.1.12 - 3個節點
  2. 火花1.6 - 3個節點
  3. spark cassandra連接器1.6

我在Cassandra中使用令牌(不是vnodes)。

我正在編寫一個簡單的工作,從Cassandra表讀取數據,並顯示其計數表有大約7000萬行,它需要15分鍾。

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

我嘗試過splitCountsplit.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 compact我能夠控制分區的數量但是整個過程花費了將近6分鍾,這是我認為太高了任何改進的建議

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

spark.cassandra.input.split.size默認值= 64.單個Spark分區中的近似行數。 值越高,創建的Spark任務越少。 過度增加值可能會限制並行度。

當我在我的cassandra表上運行compact命令時,我的問題就解決了,現在我可以使用spark.cassandra.input.split.size參數控制它了

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM