【问题标题】:What is the fastest way to copy Column family in Cassandra?在 Cassandra 中复制列族的最快方法是什么?
【发布时间】:2012-08-18 15:50:22
【问题描述】:

我想使用 Hector(或任何其他客户端)在 Cassandra 中创建另一个名称的 Column Family 副本,有没有最快的方法可以做到这一点?

谢谢

【问题讨论】:

  • 澄清一下:给定一个包含一些数据量的现有列族和一个新列族的名称,创建一个具有与原始模式和数据内容相同的架构和数据内容的新名称的列族。那是对的吗?其他元数据(如节点数量、策略等)呢?
  • 实际上我想将一个列族的所有数据复制到另一个列族,这意味着最后以不同名称创建的一个列族的两个相同副本,我们可以以一种方式逐行迭代并读取列和写给另一个列族,但我想要更快的方法来做到这一点。有没有更快的方法来做到这一点?

标签: java jakarta-ee cassandra hector


【解决方案1】:

cassandra hadoop 集成读取整个列族以用作 map reduce 作业的输入;它还可以批量输出到列族。阅读org.apache.cassandra.hadoop 包中的代码以了解该做什么。

对于读取,它会确定哪些令牌位于哪些节点上,然后使用该令牌范围执行get_range_slice(它也将令牌范围分成可管理的块)。对于写它(或者如果你使用 Bulk* 类可以做)通过构造一个 SSTable 然后将其上传到 cassandra 与上述解决方案类似的事情。

我怀疑上面使用 sstable2json 的其他答案会更加有效,但这会起作用。

【讨论】:

    【解决方案2】:

    您可以使用 sstable2json 将其读出,然后使用 json2sstable 将其写回作为您的新 CF。

    【讨论】:

    • 我想以编程方式执行此操作。你有什么例子可以做到这一点吗?谢谢
    【解决方案3】:

    我的回答是逐行迭代你说你已经在做的事情。我对此的唯一改进是使用 KeySlice 来获取多个键,因此每个请求获取多行。

    【讨论】:

      猜你喜欢
      • 2016-01-28
      • 1970-01-01
      • 1970-01-01
      • 2010-10-08
      • 2010-09-16
      • 1970-01-01
      • 1970-01-01
      • 2017-11-01
      • 2012-06-05
      相关资源
      最近更新 更多