我对Cassandra还是陌生的,这里的任何帮助将不胜感激。我有一个6个节点的集群,该集群跨越2个数据中心(每个集群3个节点)。我的客户已决定不再使用Datastax续签Cassandra许可证,并希望将其数据导出为将来可以轻松导入另一个数据库的格式。我本来打算将数据导出为CSV文件,但是由于数据分布在所有节点之间,因此我不确定导出所有数据的最佳方法是什么。
答案 0 :(得分:1)
一个选项-您应该能够使用CQL COPY命令-该命令会将数据复制为CSV格式。复制的好处是您可以从单个节点运行它(即它不是“节点”级工具)。命令将是(一次在cqlsh中):
CQL> COPY。到“ / path / to / file”
如果有很多数据或很多表,则此工具可能不合适。但是对于少数没有巨大行数(<数百万)的表,这很好。希望有帮助。
-吉姆
答案 1 :(得分:1)
自2018年起,您可以将DSBulk与DSE结合使用,以将数据导出到CSV(默认情况下)或JSON中或从中导入数据。从2019年底开始,也可以在开源Cassandra中使用它。
它可能很简单:
dsbulk unload -k keyspace -t table -u user -p password -url filename
DSBulk经过严格优化,可快速导出数据,而不会给协调器节点增加太多负担,而这只会在您运行select * from table
时发生。
您可以控制要导出的列,甚至可以提供自己的查询等。DataStax博客提供了一系列有关使用DSBulk的不同方面的博客文章:
答案 2 :(得分:0)
您可以使用CQL COPY命令从Cassandra集群中导出数据。但是,如果您有大数据量,则对于少量数据集来说是高性能的。此命令没有用,因为它会产生一些错误或超时问题。此外,您可以使用sstabledump并将节点日期日期导出为JSON格式。希望这对您有用。
答案 3 :(得分:0)
我已经为此目的实现了小脚本。这不是最佳方法,因为它运行缓慢,并且根据我的经验,会在系统表上产生连接错误。但这对于检查小型数据集的Cassandra可能很有用:https://github.com/kirillt/cassandra-utils