MarkLogic - ошибка пространства кучи Java при импорте с mlcp - PullRequest
0 голосов
/ 14 февраля 2019

Marklogic версия: 9.0-6.2 mlcp версия: 9.0.6

Я пытаюсь импортировать XML-файл в marklogic, используя приведенный ниже код MLCP.

#!/bin/bash
mlcp.sh import -ssl \
-host localhost \
-port 8010 \
-username uname \
-password pword \
-mode local \
-input_file_path /data/testsource/*.XML \
-input_file_type documents \
-aggregate_record_namespace "http://new.webservice.namespace" \
-output_collections testcol \
-output_uri_prefix /testuri/ \
-transform_module /ext/ingesttransform.sjs

Код успешно выполняетсяс небольшим файлом, но с сообщением об ошибке «пространство кучи Java» при запуске с большим файлом (450 МБ).

ERROR contentpump.MultithreadedMapper: Error closing writer: Java heap space

Как мы можем устранить эту ошибку?

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

Задание mlcp предназначено для отправки всего входного файла в виде одного отдельного документа (документы -input_file_type) размером 500 МБ в модуль преобразования.Модуль преобразования имеет логику для разбивки значений и значений (content.uri и content.value) для каждого агрегатного элемента.Это приводит к ошибке пространства кучи Java, даже несмотря на то, что доступное пространство кучи на сервере составляет около 3,4 ГБ.

Я пробовал два разных работающих проекта.

  1. Добавить агрегацию в mlcp (-input_file_type aggregates, -aggregate_record_element CustId) для разбивки на несколько документов.Это создает несколько документов в промежуточной БД
  2. , сохраняя -input_file_type в качестве документов и удаляя -transform_module, чтобы файл загружался как один отдельный документ в промежуточную.

Оба подхода работают, ноПри втором подходе могут создаваться документы размером 500 МБ (я считаю, что ограничение размера составляет 512 МБ).Поэтому я решил использовать первый подход (также мне нужен лучший URI, чем по умолчанию, созданный mlcp).

0 голосов
/ 14 февраля 2019

Вы можете передать настройки кучи Java в MLCP, используя типичную переменную среды JVM_OPTS.Запустите java -X, чтобы увидеть список всех доступных опций.Обычно я использую их:

    -Xms<size>        set initial Java heap size
    -Xmx<size>        set maximum Java heap size
    -Xss<size>        set java thread stack size

Вы можете вызвать свой скрипт или MLCP следующим образом:

JVM_OPTS="-Xmx1g" mlcp.sh ...

HTH!

...