我在我的系统上安装了一个Cassandra1.1.2作为单节点集群,并且有三个密匙空间:hotel、student和employee。如果可能的话,我想转储hotel的键空间模式及其列族数据,并在其他Cassandra集群上恢复转储。有没有人能详细建议我该怎么做?
发布于 2012-07-27 15:31:13
您可以使用sstable2json和json2sstable cassandra工具
在同一和this上查看Datastax documentation
Usage: sstable2json [-f outfile] <sstable> [-k key [-k key [...]]]
Usage: json2sstable -K keyspace -c column_family <json> <sstable>您始终可以在文件中执行cassandra-cli命令
cassandra-cli -h HOST -p PORT -f fileName您可以将所有create语句装载到一个文件中并执行此命令
要获取cli脚本以创建键空间和列族,请在cassandra-cli界面中使用以下命令
show schema但是以防你想要创建一个包含两个节点的集群。您不需要执行上述所有操作。只需使用不同的令牌范围和相同的集群名称启动另一个节点即可。Cassandra将在内部管理数据流和模式信息
发布于 2014-02-27 19:46:24
我不推荐使用stable2json和json2sstable来加载大量数据。它使用jackson API创建数据集并将其转换为json格式。它意味着将所有数据加载到内存中以创建唯一的json表示。
对于少量的数据是可以的,现在想象一下,加载一个超过4000万行的大型数据集,大约25‘t的数据,这些工具根本不能很好地工作。我已经在没有澄清的情况下问过datastax的人了。
在大型数据集的情况下,只需将cassandra数据文件从一个集群复制到另一个集群就可以解决问题。在我的例子中,我正在尝试从Cassandra 1.0.6集群迁移到1.2.1,数据文件在这个版本之间不兼容。
解决方案是什么?我正在编写自己的导出/导入工具来解决这个问题。我希望能尽快发布这个工具的链接。
https://stackoverflow.com/questions/11682197
复制相似问题