【发布时间】:2018-10-28 03:45:13
【问题描述】:
我正在尝试运行一个简单的 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='|';
它适用于大多数桌子,除了我最大的桌子。在这种情况下,我会收到一个错误,它无法分配足够的内存。表的文件大小远没有错误消息声称的那么大(小于 1GB)。
749314 行在 9 分 11.240 秒内导出到 1 个文件。
./dump_cassandra.sh: xmalloc: ../../.././lib/sh/strtrans.c:63: 无法分配 18446744072166431589 字节(已分配 6442528768 字节)", "stdout_lines": ["[ Thu May 17 13:41:47 UTC 2018] 执行以下查询:", "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='| ';"
这个answer 看起来很有希望,但不幸的是它对我不起作用。
是否有什么我遗漏的东西阻止我在大型(相对而言)表上运行成功的 COPY?
--
编辑:此错误似乎是环境错误。我在具有几乎相同数据量的不同服务器上得到了不同的结果。
【问题讨论】:
-
您是否尝试过限制 COPY 命令?请参阅以下链接:docs.datastax.com/en/cql/3.3/cql/cql_reference/cqlshCopy.html。我正在考虑:NUMPROCESSES、CHUNKSIZE、MAXREQUESTS
-
什么 cassandra 版本?
-
版本为 2.1.17.1448