6

我在我的系统上安装了 Cassandra 1.1.2 作为单节点集群,并具有三个键空间hotelstudentemployee. 如果可能,我想转储hotel其列族数据的键空间模式,并在其他 Cassandra 集群上恢复转储。有人可以详细建议我该怎么做吗?

4

2 回答 2

6

您可以使用sstable2jsonjson2sstablecassandra 工具

查看相同的 Datastax文档也是

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 在内部将设法流式传输数据和模式信息

于 2012-07-27T07:31:12.650 回答
2

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

少量数据就可以了,现在想象一下要加载超过 4000 万行的大型数据集,大约 25GB 的数据,这些工具根本无法正常工作。我已经在没有澄清的情况下向 datastax 人员询问过。

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

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

于 2014-02-27T11:46:23.570 回答