在cassandra 3中的冻结集上插入值

时间:2017-12-14 16:07:25

标签: cassandra bigdata cqlsh cassandra-3.0

我目前正在开发一个Cassandra 3数据库,其中一个表有一个如下定义的列:

column_name map<int, frozen <set<int>>>

如果必须在给定地图键 x 的情况下更改完整集的值,我只需要这样做:

UPDATE keyspace.table SET column_name[x] = {1,2,3,4,5} WHERE ...

问题是我需要在给定键的集合上插入值。我试过这个:

UPDATE keyspace.table SET column_name[x] = column_name[x] + {1} WHERE ...

但它返回:

  

语法异常:第1:41行在输入中没有可行的选择&#39; [&#39; (... SET column_name [x] = [column_name] [...)

我做错了什么?有谁知道如何以我需要的方式插入数据?

1 个答案:

答案 0 :(得分:1)

由于地图的价值已冻结,因此您无法使用此类更新。

  

冻结值将多个组件序列化为单个值。非冻结类型允许更新单个字段。 Cassandra将冻结类型的值视为blob。必须覆盖整个值。

您必须阅读完整的地图,获取该项附加新项目的值,然后重新插入