sstableloader 更新现有列
sstableloader to update existing columns
嗨,我是 cassandra 的新手,正在检查 sstableloader。
通过 cassandra 的功能,如果在 Cassandra table 中已有的键上发生任何插入,则值将被更新。我尝试使用相同的概念使用 sstableloader 使用 MAP.
但不是只更新所需的列,而是更新整行。有什么方法可以让我们只插入所需的列,而将其余的保留为之前的状态。
sstableLoader 对所有插入使用更新。你说它更新整行是什么意思?您是在手动创建 sstable 并将它们推送到 cassandra 吗?
@root545,感谢您的关注。
所以基本上我做错了。 Cassandra 总是根据键插入,如果 y 已经存在,那么它将覆盖该键的值。
当您想覆盖现有键的任何值时,只需提供插入语句作为插入 table([=31= 中存在的键],您要覆盖的值)。
例如,如果我们有如下 table。
创建table示例(
key1 文本,
key2文本,
值 1 文本,
值 2 文本,
值 3 文本)
主键(key1,key2)
那么为了单独更新 value3,我们需要提供插入语句
插入示例 (key1,key2,value3) 值 (?,?,?)
并将 sstablewriter 创建为
CQLSSTableWriter cqlssTableWriter = CQLSSTableWriter.builder().inDirectory().forTable().using().withPartitioner(new Murmur3Partitioner()).build();
应该这样做
嗨,我是 cassandra 的新手,正在检查 sstableloader。
通过 cassandra 的功能,如果在 Cassandra table 中已有的键上发生任何插入,则值将被更新。我尝试使用相同的概念使用 sstableloader 使用 MAP.
但不是只更新所需的列,而是更新整行。有什么方法可以让我们只插入所需的列,而将其余的保留为之前的状态。
sstableLoader 对所有插入使用更新。你说它更新整行是什么意思?您是在手动创建 sstable 并将它们推送到 cassandra 吗?
@root545,感谢您的关注。
所以基本上我做错了。 Cassandra 总是根据键插入,如果 y 已经存在,那么它将覆盖该键的值。
当您想覆盖现有键的任何值时,只需提供插入语句作为插入 table([=31= 中存在的键],您要覆盖的值)。
例如,如果我们有如下 table。
创建table示例( key1 文本, key2文本, 值 1 文本, 值 2 文本, 值 3 文本) 主键(key1,key2)
那么为了单独更新 value3,我们需要提供插入语句
插入示例 (key1,key2,value3) 值 (?,?,?)
并将 sstablewriter 创建为
CQLSSTableWriter cqlssTableWriter = CQLSSTableWriter.builder().inDirectory().forTable().using().withPartitioner(new Murmur3Partitioner()).build();
应该这样做