在Cassandra中进行和导出Keyspace模式
我在我的系统上安装了Cassandra 1.1.2作为单节点集群,并有三个键空间: hotel
, student
和employee
。 我希望尽可能转储hotel
的键空间架构及其列族数据,并在其他Cassandra集群上恢复转储。 任何人都可以详细建议我该怎么做?
您可以使用sstable2json
和json2sstable
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内部将设法流式传输数据和架构信息
我不建议使用stable2json
和json2sstable
来加载大量的数据。 它使用jackson API创建数据集并将其转换为json格式。 它意味着加载内存中的所有数据以创建唯一的json表示。
对于少量数据是可以的,现在想象加载超过4000万行的大型数据集,大约25GB的数据,这些工具根本不能很好地工作。 我已经在没有澄清的情况下问过datastax的人。
对于大型数据集,只需将cassandra数据文件从群集复制到另一个群集即可解决问题。 在我的情况下,我正在尝试从Cassandra 1.0.6群集迁移到1.2.1,此版本之间的数据文件不兼容。
解决办法是什么? 我只是编写自己的导出/导入工具来解决这个问题。 我希望尽快发布这个工具的链接。
- 如何从Cassandra增加Dataflow读取并行性
- 线程“main”中的exceptionorg.apache.spark.SparkException:此JVM中只能运行一个SparkContext(参见SPARK-2243)
- 与Apache Cassandra的SoapUI JDBC连接
- 只有日期范围扫描Cassandra CQL时间戳
- Cassandra使用TokenAwarePolicy和shuffleReplicas进行负载均衡
- Java程序以java结果终止:137
- Java,Spark和Cassandra java.lang.ClassCastException:com.datastax.driver.core.DefaultResultSetFuture无法转换为阴影
- Cassandra – 交易支持
- 如何使用映射管理器在cassandra日期字段中存储java.sql.Date?