【问题标题】:Clearing a column for all rows in Cassandra清除 Cassandra 中所有行的列
【发布时间】:2015-04-17 03:59:28
【问题描述】:

这是我的场景。我有一张超过 500 万行的表格。一个特定的映射列有两个键(某些条目可能缺少一个或两个键,但任何行最多有该列的两个键)。

我希望在所有行中“清除”该列的值。我不想摆脱该列,因为之后我会运行一些设置一些值的东西。我想简单地做 update table set column.key=null ... 由于超时而失败。

实现这一点的最 cassandra 友好的方式是什么?我可以访问 Spark。是否会使用 spark、读取 rdds 并按行发出更新查询并在分区中执行此操作?

谢谢, 灰烬。

PS:Apache Cassandra 2.1.2、Spark 1.1.1。

==========================

编辑:我可以忍受停机时间。

【问题讨论】:

  • 您尝试发出update 吗?
  • 更新 tbl set col=null;没有主键失败。
  • “一个特定的地图列有两个键”是什么意思?你有map<text,text> 或类似的类型的列吗?
  • 是的。该列是 map 并且任何行最多有两个键 - 'a' 和 'f'。有些会有一个,大多数会有空。

标签: cassandra apache-spark cql


【解决方案1】:

最后只是简单地创建了一个 spark 应用程序,获取表的 rdd 并为每个分区的每一行发布异步更新,等待每个分区的查询完成。用了 8 分 52 秒更新了 500 万多行。虽然不需要,但之后对密钥空间进行了修复。

【讨论】:

  • 这个我也想了一些,实在想不出好办法。最后,选择 Spark 可能是您的最佳选择。
猜你喜欢
  • 1970-01-01
  • 2021-01-16
  • 2011-09-24
  • 1970-01-01
  • 2011-11-10
  • 1970-01-01
  • 2017-03-13
  • 1970-01-01
  • 2015-01-31
相关资源
最近更新 更多