Как скопировать большой стол Cassandra без нехватки памяти? - PullRequest
0 голосов
/ 17 мая 2018

Я пытаюсь запустить простой скрипт COPY базы данных Cassandra, как в приведенном ниже примере (или какой-то очень похожий вариант):

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='|';

Он работает на большинстве таблиц, кроме моей самой большой.В этом случае я получаю ошибку, когда он не может выделить достаточно памяти.Размер файла таблицы далеко не так велик в данных, как утверждается в сообщении об ошибке (менее 1 ГБ).

749314 строк экспортировано в 1 файл за 9 минут и 11,240 секунд.

. / Dump_cassandra.sh: xmalloc: ../../.././lib/sh/strtrans.c:63: невозможно выделить 18446744072166431589 байт (выделено 6442528768 байт) "," stdout_lines ": [" [чт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 и PAGETIMEOUT = 40 AND PAGESIZE = 20 AND DELIMITER = ''; "

Этот ответ показался многообещающим, но, к сожалению, он не работает для меня.

Есть ли что-то, что мне не хватает, что мешает мне запуститьуспешное КОПИРОВАНИЕ на большой (условно говоря) таблице?

-

РЕДАКТИРОВАТЬ: Эта ошибка кажется окружающей среды. У меня были смешанные результаты на разных серверах с почтиидентичные объемы данных.

1 Ответ

0 голосов
/ 22 мая 2018

Настройка 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='|';

...