2012-08-23 46 views
2

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

感谢

+0

澄清:鉴于包含一定数量数据和新列族名称的现有列族,请使用与原始列表具有相同模式和数据内容的新名称创建列族。那是对的吗?其他元数据如节点数,策略等呢? –

+0

实际上我想将一个列族的所有数据复制到另一个列族中,意思是在结尾使用不同名称创建的一个列族的两个相同副本,我们可以通过一种方式逐行地迭代并读取列并写入另一列族,但是我想要更快的方式来做到这一点。有没有更快的方法来做到这一点? –

+0

像这样的东西http://stackoverflow.com/questions/11682197/keyspace-schema-import-and-export-cassandra/11683309#11683309 – Tamil

回答

3

cassandra hadoop集成读取整列系列作为地图缩减作业的输入;它也可以批量输出到列系列。阅读org.apache.cassandra.hadoop包中的代码,了解如何操作。

对于读取,它会计算出哪些令牌位于哪个节点上,然后使用该令牌范围执行get_range_slice(它将令牌范围也划分为可管理的块)。对于编写它(或者如果你使用Bulk *类)可以做到与上述解决方案类似的构建SSTable,然后将其上传到cassandra。

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

2

您可以使用sstable2json读出来,然后json2sstable把它写回作为新的CF.

+0

我想以编程方式做到这一点。你有任何例子来做到这一点?谢谢 –

+0

这些工具的代码是开源的,所以请使用它! –

2

我的答案是涉及迭代行,你说你已经在做。我唯一的改进就是使用KeySlice来获取多个键,并因此获得多行,每个请求。

相关问题