从Cassandra群集导出所有数据的最佳方法是什么?

时间:2019-10-16 13:36:13

标签: cassandra

我对Cassandra还是陌生的,这里的任何帮助将不胜感激。我有一个6个节点的集群,该集群跨越2个数据中心(每个集群3个节点)。我的客户已决定不再使用Datastax续签Cassandra许可证,并希望将其数据导出为将来可以轻松导入另一个数据库的格式。我本来打算将数据导出为CSV文件,但是由于数据分布在所有节点之间,因此我不确定导出所有数据的最佳方法是什么。

4 个答案:

答案 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的不同方面的博客文章:

  1. Introduction and Loading
  2. More Loading
  3. Common Settings
  4. Unloading
  5. Counting
  6. Examples for Loading From Other Locations

答案 2 :(得分:0)

您可以使用CQL COPY命令从Cassandra集群中导出数据。但是,如果您有大数据量,则对于少量数据集来说是高性能的。此命令没有用,因为它会产生一些错误或超时问题。此外,您可以使用sstabledump并将节点日期日期导出为JSON格式。希望这对您有用。

答案 3 :(得分:0)

我已经为此目的实现了小脚本。这不是最佳方法,因为它运行缓慢,并且根据我的经验,会在系统表上产生连接错误。但这对于检查小型数据集的Cassandra可能很有用:https://github.com/kirillt/cassandra-utils

相关问题