如何在 运行 内存不足的情况下复制大型 Cassandra table?

How to COPY a large Cassandra table without running out of memory?

我正在尝试 运行 一个简单的 Cassandra 数据库 COPY 脚本,如下例(或一些非常相似的变体):

COPY my_keyspace_name.my_table_name TO 'cassandra_dump/my_keyspace_name.my_table_name.csv' WITH HEADER=true AND PAGETIMEOUT=40 AND PAGESIZE=20 AND DELIMITER='|';

它适用于大多数 table,除了我最大的那个。在那种情况下,我会收到无法分配足够内存的错误。 table 的文件大小远不及错误消息声称的数据大(小于 1GB)。

749314 rows exported to 1 files in 9 minutes and 11.240 seconds.

./dump_cassandra.sh: xmalloc: ../../.././lib/sh/strtrans.c:63: cannot allocate 18446744072166431589 bytes (6442528768 bytes allocated)", "stdout_lines": ["[Thu May 17 13:41:47 UTC 2018] Executing the following query:", "COPY my_keyspace_name.my_table_name TO 'cassandra_dump/my_keyspace_name.my_table_name.csv' WITH HEADER=true AND PAGETIMEOUT=40 AND PAGESIZE=20 AND DELIMITER='|';"

这个 看起来很有希望,但不幸的是它对我不起作用。

我是否遗漏了什么阻止我 运行在大型(相对而言)table 上成功复制 COPY?

--

编辑: 这个错误似乎是环境错误。我在数据量几乎相同的不同服务器上得到了不同的结果。

设置MAXOUTPUTSIZE会将备份数据拆分到多个文件中,不会导致出现此错误

COPY my_keyspace_name.my_table_name TO 'cassandra_dump/my_keyspace_name.my_table_name.csv' WITH HEADER=true AND PAGETIMEOUT=40 AND MAXOUTPUTSIZE=100000 AND DELIMITER='|';