在Cassandra中进行和导出Keyspace模式

我在我的系统上安装了Cassandra 1.1.2作为单节点集群,并有三个键空间: hotelstudentemployee 。 我希望尽可能转储hotel的键空间架构及其列族数据,并在其他Cassandra集群上恢复转储。 任何人都可以详细建议我该怎么做?

您可以使用sstable2jsonjson2sstable cassandra工具

查看Datastax 文档也是如此

 Usage: sstable2json [-f outfile]  [-k key [-k key [...]]] Usage: json2sstable -K keyspace -c column_family   

您始终可以在文件中执行cassandra-cli命令

 cassandra-cli -h HOST -p PORT -f fileName 

您可以将所有create语句加载到文件中并执行此命令

要获取cli脚本以创建键空间和列族,请在cassandra-cli接口中使用以下命令

 show schema 

但是你想要创建一个包含两个节点的集群。 您不需要执行以上所有操作。 只需启动具有不同令牌范围和相同群集名称的其他节点即可。 Cassandra内部将设法流式传输数据和架构信息

我不建议使用stable2jsonjson2sstable来加载大量的数据。 它使用jackson API创建数据集并将其转换为json格式。 它意味着加载内存中的所有数据以创建唯一的json表示。

对于少量数据是可以的,现在想象加载超过4000万行的大型数据集,大约25GB的数据,这些工具根本不能很好地工作。 我已经在没有澄清的情况下问过datastax的人。

对于大型数据集,只需将cassandra数据文件从群集复制到另一个群集即可解决问题。 在我的情况下,我正在尝试从Cassandra 1.0.6群集迁移到1.2.1,此版本之间的数据文件不兼容。

解决办法是什么? 我只是编写自己的导出/导入工具来解决这个问题。 我希望尽快发布这个工具的链接。