2015-05-12 2 views
3

Когда я пытаюсь загрузить 160 000 XML-документов в MarkLogic 8.0-2, используя mlcp в MacOS 10.10.4, выдается ошибка mlcp-Hadoop2-1.3-1/bin/mlcp.sh: line 16: /usr/bin/java: Argument list too long.Как загрузить много (100K +) XML-документов, используя mlcp, не встречая слишком длинную ошибку списка аргументов?

Команды Я выдача:

mlcp import -database FO -username sss4r -password ******* -host localhost -port 8003 -mode local -input_file_pattern '*\.xml' -output_uri_replace "/Users/sss4r/Documents/FOPOC,''" -input_file_path .

Я понимаю, что это, вероятно, проблема оболочки Unix, МЛКП использует файловые средства для возвращения списка имен. Существует системное ограничение на количество имен файлов, которые могут быть обработаны в команде.

Что такое рекомендованная MarkLogician лучшая практика для решения этой проблемы? Попытка навалом в небольших кусках? Попробуйте изменить лимит системы?

Спасибо.

+1

Попробуйте использовать файл параметров и посмотреть, если у вас есть лучшая удача с этим: https://docs.marklogic.com/guide/ ingestion/content-pump # id_36150 –

+0

Спасибо, @RobS., это полезно. – sss4r

ответ

3

MLCP не зависит от расширения оболочки, чтобы иметь возможность загружать файлы. Боюсь, расширение оболочки происходит внутри mlcp.sh, но только непреднамеренно. Если вы сбросите параметр шаблона входного файла, вы, вероятно, увидите, что он загрузит все файлы. Быстрое исправление может заключаться в том, чтобы поместить файлы в sub-dir, не использовать шаблон файла и просто указывать на sub-dir как на вход_файл_path.

Rob S. дает еще одно решение, предотвращающее это. Поместите ваши параметры в файл, каждый параметр в отдельной строке и укажите на параметр -options_file в командной строке. Это также избавляет вас от проблем с кавычками и других специальных символов, непреднамеренно интерпретируемых средой оболочки.

Подробнее здесь: https://docs.marklogic.com/guide/ingestion/content-pump#id_36150

HTH!

PS: Я подал ошибку, чтобы улучшить МЛКП (# 33670)

+0

Это очень полезная информация, @grtjn, благодарю вас за отправку отчета об ошибке. Основываясь на вашем ответе, я приступлю к правильному редактированию вопроса. – sss4r

4

Во-первых, вы сэкономите много горя, если вы используете файл опций, когда есть значения строки аргументов команды, которые могли бы получить интерполированные оболочкой. В противном случае вы в конечном итоге сражаетесь в гору против цитирования снаряда. Geert уже предоставил ссылку на этот синтаксис, поэтому я не буду повторять его.

Во-вторых, -input_file_pattern требует регулярного выражения Java. *\.xml, вероятно, не то, что вы хотите. Вероятно, вы имеете в виду .*\.xml. Для ссылки на языке шаблона (ов), используемого МЛКП, см:

https://docs.marklogic.com/guide/ingestion/content-pump#id_10243