[英]How to control number of partition while reading data from Cassandra?
我用:
我在Cassandra中使用令牌(不是vnodes)。
我正在編寫一個簡單的工作,從Cassandra表讀取數據,並顯示其計數表有大約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 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.