簡體   English   中英

更新Cassandra行中設置類型的列

[英]update column of set type in Cassandra row

我有一個RDD [PersonType] = [pid,cid,firstname,lastname,age,source,sourceType,message]值,作為RDD = [1000,100,Vikash,Singh,33,source,sourceType,message]

我有csaandra row作為[pid,cid,firstname,lastname,age,dept,mrids],這里設置了mrids。 假設cassandra中的值為[1000,100,vikash,singh,33,bank,{sourceold.sourceTypeold.messageold}

我想用新舊值更新cassandra列的內容。 因此,我在cassandra中的新更新值應為[1000,100,vikash,singh,33,bank,{sourceold.sourceTypeold.messageold,source.sourceType.message}

請告訴我如何更新mrids欄。

val rdd[personType] = rdd1
val rdd2 = sc.cassandraTable(keyspace,tablename)
              .select("p_id","c_id", "mrids")

接下來我應該寫什么代碼來實現這一目標?

這應該使您入門。

它顯示了如何基於密鑰進行rdd的聯接,以及如何將數據附加到另一個rdd的集合中。

val temp = List((1, 4, Set(1)),
                    (2, 5, Set(2)),
                    (3, 6, Set(3))
                    )
val temp2 = List((1, 11, 11),
                  (2, 11, 22),
                  (3, 11, 33)
                )
val temp_rdd = sc.parallelize(temp)

val temp2_rdd = sc.parallelize(temp2)

val test = temp_rdd.map{case(key, data, set)=>((key),(data, set))}
                        .join(temp2_rdd.map{case(key, data, set_new_value)=>((key),(data, set_new_value))})
                        .map{case(key, ((data1, set),(data2, set_new_value)))=>(key, set.toSet + set_new_value)}


test.collect().foreach(println)

最后,您可以使用rdd.saveToCassandra保存rdd結果集。

暫無
暫無

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

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