我有一些表要从一个cassandra集群复制到另一个集群;我认为最简单的方法是运行一系列shell命令,如:cqlsh-e“将keyspace.table1复制到'table1.csv',header=true;(然后是一系列反向shell命令以复制到新集群中)。但是,当我运行这个时,我看到:使用11个子进程使用列[column1,column2,column3,column4]启动keyspace.table1的副本。但是这个过程永远挂起,永远不会添加到目标csv文件中。
cuxqih211#
使用 nodetool snapshot -cf <table_name> -t <snpashot_id> <keyspace> 其中keyspace和table name是结构的名称;snapshot\u id将是一个帮助您识别快照的标签。您可以使用验证快照 nodetool listsnapshots ,然后按照此处说明的步骤还原它。一旦你完成了这个程序,你就需要做一些家庭清洁 nodetool clearsnapshot <snapshot_id>
nodetool snapshot -cf <table_name> -t <snpashot_id> <keyspace>
nodetool listsnapshots
nodetool clearsnapshot <snapshot_id>
u0sqgete2#
您要复制的表中的行数和每行大小是多少?如果一行和#行的大小都很大,那么使用copy就不是最佳选择。您可以尝试的一个选项是减少批处理大小。
cqlsh -e "copy table keyspace.table1 to 'table1.csv' with header = true AND MAXBATCHSIZE=5;
这可能需要更长时间,但肯定会结束。我也遇到过类似的问题,一个表有近3000万条记录,减少批处理大小也有帮助。
2条答案
按热度按时间cuxqih211#
使用
nodetool snapshot -cf <table_name> -t <snpashot_id> <keyspace>
其中keyspace和table name是结构的名称;snapshot\u id将是一个帮助您识别快照的标签。您可以使用验证快照
nodetool listsnapshots
,然后按照此处说明的步骤还原它。一旦你完成了这个程序,你就需要做一些家庭清洁
nodetool clearsnapshot <snapshot_id>
u0sqgete2#
您要复制的表中的行数和每行大小是多少?如果一行和#行的大小都很大,那么使用copy就不是最佳选择。
您可以尝试的一个选项是减少批处理大小。
这可能需要更长时间,但肯定会结束。我也遇到过类似的问题,一个表有近3000万条记录,减少批处理大小也有帮助。