Cassandra sstableloader更新现有列

Cassandra sstableloader更新现有列,cassandra,cassandra-2.0,Cassandra,Cassandra 2.0,嗨,我是卡桑德拉的新手,正在检查sstableloader 通过cassandra函数,如果在cassandra表中已有的键上发生任何插入,则值将被更新。我尝试使用sstableloader和MAP使用相同的概念 但它不是只更新所需的列,而是更新整行。是否有任何方法可以只插入所需的列,而将其余列保留为前面的列。sstableLoader对所有插入使用更新。你说它更新整行是什么意思?您是否手动创建sstable并将其推送到cassandra?@root545,感谢您的关注 所以基本上我做错了。Ca

嗨,我是卡桑德拉的新手,正在检查sstableloader

通过cassandra函数,如果在cassandra表中已有的键上发生任何插入,则值将被更新。我尝试使用sstableloader和MAP使用相同的概念


但它不是只更新所需的列,而是更新整行。是否有任何方法可以只插入所需的列,而将其余列保留为前面的列。

sstableLoader对所有插入使用更新。你说它更新整行是什么意思?您是否手动创建sstable并将其推送到cassandra?

@root545,感谢您的关注

所以基本上我做错了。Cassandra始终基于键进行插入,如果y已存在,则它将覆盖该键的值

当您要覆盖现有键的任何值时,只需提供insert语句作为insert into table(表中存在的键,即您要覆盖的值)

例如,如果我们有一个如下表

创建表示例( 键1文本, 键2文本, 值1文本, 价值2文本, 值3(文本) 主键(键1、键2)

然后,为了单独更新value3,我们需要提供insert语句

在示例(键1、键2、值3)中插入值(?、、、?)

并将sstablewriter创建为

CQLSSTableWriter CQLSSTableWriter=CQLSSTableWriter.builder().inDirectory().forTable().using().withPartitioner(新的Build3Partitioner()).build()

这应该可以