【问题标题】:run a bulk update query in cassandra on 1 column在 cassandra 中对 1 列运行批量更新查询
【发布时间】:2019-01-09 03:05:58
【问题描述】:

我们有一个场景,cassandra 中的一个表有超过一百万条记录,我们希望对一个列执行批量更新(基本上将整个表中的列值设置为 null)。

有没有办法这样做,因为下面的查询在 CQL 中不起作用

UPDATE TABLE_NAME SET COL1=NULL WHERE PRIMARY_KEY IN(SELECT PRIMARY_KEY FROM TABLE_NAME );

P.S - 该列不是主键或集群键。

【问题讨论】:

    标签: cassandra cql3 cqlsh


    【解决方案1】:

    除了遍历每一行并更新值之外,真的没有办法通过 CQL 做到这一点。

    不过,如果您喜欢冒险,可能有办法做到这一点。

    您可以在 cqlsh 中使用 COPY 将表中的数据输出到文件中。使用 sed 之类的工具,您可以修改此文本文件以更改列,然后将同一文件导入回 cassandra。

    此解决方案不是最优的,可能不适用于某些数据集,但它可以完成工作。

    就我个人而言,我仍然更喜欢迭代而不是这样做。

    【讨论】:

      【解决方案2】:

      前几天有一个关于Deleting a column in cassandra for a large dataset 的类似问题...我建议还阅读从Alter table documentation 删除列的部分。

      在这种情况下,一个解决方案可能是删除该列并重新添加它

      如果删除列然后重新添加,Cassandra 不会恢复 在删除列之前写入的值。随后的 SELECT 上 此列不返回删除的数据。

      我会事先在测试系统上对此进行测试,然后检查墓碑是否已被移除。

      【讨论】:

        猜你喜欢
        • 2014-10-21
        • 2018-11-05
        • 1970-01-01
        • 2014-07-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-22
        • 1970-01-01
        相关资源
        最近更新 更多