2014-11-21 57 views
1

的我用DSE 4.5.3DataStax企業:saveToCassandra產生大量的暗示切換

我有8個節點(相當強大的節點)的集羣是從火花到卡桑德拉與數據產生的麻煩,我想從火花中產生一些測試數據。

我的spark工作是從cassandra表(它代表了一天的數據)中讀取5M行,然後將它們緩存到內存中(每個節點的內存爲32 GB,所以沒問題),最後將它們保存n次在另一個cassandra表中,模擬更多天的數據。

val table = sc.cassandraTable[RecordData]("data", "one_day").cache 
    val firstDate = table.first.gets_dt_tm 
    val start = 1 
    val end = 10 
    for(i <- start to end){ 

     table.map(row => { 
      //modify row to increment row timestamp day according to i 

      java.lang.Thread sleep 2 
      row 

     }).saveToCassandra("data","ten_days") 
    } 

我也放慢了寫入過程的睡眠,但沒有幫助。問題是,在我的集羣中,我得到了很多提示,我不得不連續修復節點。請記住,我需要生成600天的數據。

這是我的表

CREATE TABLE ten_days(
YEAR int, 
MONTH int, 
DAY int, 
ID decimal, 
... other fields 
S_DT_TM timestamp, 
PRIMARY KEY ((ID,C_TRX_REF),YEAR,MONTH,DAY,S_DT_TM)); 

ID的結構和C_TRX_REF是一天中唯一的密鑰,但不能跨多天。 (ID,C_TRX_REF)的不同計數是5M。

S_DT_TM是第二個分辨率的時間戳,所以它在我的數據集中不是唯一的。

爲什麼spark寫入cassandra會產生提示?你需要更多信息嗎? 什麼是從火花寫入數百萬行到cassandra的最佳實踐?

感謝

enter image description here

回答

3

在你的語句中的睡眠是最有可能不是真正減緩這個查詢的執行。由於這些操作是以每個分區爲基礎應用的,因此我的猜測是睡眠只是在整個分區開始寫入之前暫停。

對於真正的問題。您將生成提示的唯一原因是,如果您的某個節點無法跟上您的Spark任務正在寫入的數據量。這意味着一個節點在突變執行過程中無法訪問,因此協調節點保存了一個序列化的突變副本,以便在不可達節點恢復聯機時。可以向下節流批量大小使用

spark.cassandra.output.batch.size.rows降低併發寫入的量:每單 批處理中的行數;缺省值是「汽車」,這意味着該連接器將調整基於數據的每一行

spark.cassandra.output.batch.size.bytes在量 行數:以字節爲單位的批量最大總大小;默認爲64 kB。

https://github.com/datastax/spark-cassandra-connector/blob/master/doc/5_saving.md

但你可以最有可能更好地提高吞吐量,確保所有的磁碟機在您羣集上SSD的,而且commitlog /火花目錄都還放在SSD上。

+0

謝謝拉斯,你是在睡覺!我的SparkConf目前是val conf = new SparkConf(true) .set(「spark.cassandra.connection.host」,「172.17.52.30」) .set(「spark.cassandra.auth.username」,「cassandra 「) .set(」spark.cassandra.auth.password「,」cassandra「) .set(」spark.cassandra.output.batch.size.rows「,」5120「) .set(」spark.cassandra .output.batch.size.bytes「,」262144「) .set(」spark.cassandra.output.concurrent.writes「,」10「) – 2014-11-21 20:56:42

+0

但我仍然收到類似這些批准的[data2。 ten_days]的大小是149231,超過了指定的5120的閾值144111 – 2014-11-21 21:04:58

+0

只能使用批量字節並將其設置爲5120 – RussS 2014-11-21 21:20:33