簡體   English   中英

使用 Scala 更新 Cassandra DB 中的字符串列表列

[英]Update a String list column in Cassandra DB with Scala

我是 Cassandra 和 Scala 的新手,我正在研究一個 Kafka 消費者(用 Scala 編寫),它必須根據收到的數據更新 Cassandra 上一行的字段。 到目前為止沒有問題。

在這一行中,一個字段是一個字符串列表,當我進行更新時,這個字段沒有改變,所以我必須自己分配相同的字符串列表。

UPDATE keyspaceName.tableName
SET fieldToChange = newValue
WHERE id = idValue
AND fieldA = '${currentRow.getString("fieldA")}'
AND fieldB = ${currentRow.getInt("fieldB")}
...
AND fieldX =  ${currentRow.getList("fieldX", classOf[String]).toString}
...

但我什至收到例外:

com.datastax.driver.core.exceptions.SyntaxError: line 19:49 no viable alternative at input ']' (... 482                   AND fieldX =  [[listStringItem1]]...)

我目前還沒有找到任何可以幫助我瀏覽網絡的東西

問題是 Scala 的 list 字符串表示與Cassandra 的 list 表示不匹配,因此會產生錯誤。

與其直接在代碼中構建 CQL 語句,不如使用PreparedStatement並將變量綁定到它:

  1. 首先,它會加快執行速度,因為 Cassandra 不會單獨解析每條語句;
  2. 綁定變量會更容易,因為您不需要關心相應的字符串表示

但要非常小心 Scala - Java 驅動程序需要 Java 的列表、集合、映射和基本類型,如 int 等。您可能會查看java-driver-scala-extras 包,但您需要自己編譯它,因為它在 Maven Central 上不可用。

暫無
暫無

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

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