在Cassandra中进行和导出Keyspace模式

时间:2012-07-27 05:53:55

标签: java cassandra

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

2 个答案:

答案 0 :(得分:6)

您可以使用sstable2jsonjson2sstable cassandra工具

同时查看数据共享documentationthis

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

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

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

show schema

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

答案 1 :(得分:2)

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

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

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

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

相关问题