簡體   English   中英

更新cassandra表中的一列

[英]update one column in cassandra table

我有一個卡桑德拉表person_master(personId:int,customerId:Int,firstName:String,lastName:String,mrids:Set)primaryKey(personId和customerID)

假設我有一個結構為[personId,customerId,firstName,lastname,messageType:String,source:String,sourceType:String]的輸入RDD。

假設RDD的值是:[1001,119,None,None,{abc.xyz},而cassandra行的值是[1001,119,Vikash,Singh,{aaa.bbb}]

我想基於RDD值獲取cassandra行,並更新cassandra表的mrids列,並使用cassandra行中的所有其他列。

例如,在此,我希望最終的RDD值為[1001,119,Vikash,Singh,{aaa.bbb,abc.xyz}],稍后我將其更新為cassandra。

有人可以使用cassandra Connector在Spark中給我解決方案嗎?

假設sc是sparkContext之類的,

val sparkConf = new SparkConf().setMaster(SPARK_MASTER)
                            .setAppName(SPARK_SCALA_APP_NAME)
                            .setJars(SPARK_SCALA_JAR)
sparkConf.set("spark.cassandra.connection.host", value)
sparkConf.set("spark.cassandra.auth.username", value)
sparkConf.set("spark.cassandra.auth.password", value)
val sc = new SparkContext(sparkConf)

您可以使用或忽略where子句(僅當其分區鍵可使用where)

val selectedRow = sc.cassandraTable("keyspace", "tableName")
      .select("key", "column2", "column3")
      .where("key IN ?", keys)
      .as((key: String, column2: String, column3: Integer)
          =>(key, column2, column3))

對rdd進行過濾和修改,然后將其保存,

selectedRow.saveToCassandra("keyspace",
                           "tableName",
                           SomeColumns("key", "column2", "column3"))

暫無
暫無

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

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