Marklogic MLCP: как получить количество вставленных записей?

Я загружаю данные, используя mlcp. После завершения этого процесса, как я могу получить количество документов, вставленных в БД?

Изменить: на самом деле я инициализирую этот процесс MLCP из java, и я хочу, чтобы запись вставлялась в приложение java. Как я могу получить количество вставленных записей из приложения Java


person user3463568    schedule 24.02.2015    source источник


Ответы (3)


При запуске mlcp регистрирует ATTEMPTED_INPUT_RECORD_COUNT и любые ошибки. Вы могли бы использовать это.

Если вы начнете с известного количества, вы можете посмотреть статус базы данных в пользовательском интерфейсе администратора.

Теперь, когда ваши документы находятся в базе данных, вы также можете запросить их и подсчитать, используя xdmp:estimate. Например, часто рекомендуется установить выходную коллекцию со встроенной в нее отметкой времени. Или, если maintain-last-modified включен, вы можете использовать это.

Если эти идеи не помогут, может быть, вы сможете уточнить вопрос?

person mblakele    schedule 24.02.2015
comment
Спасибо, mblakele. На самом деле я инициализирую процесс MLCP из уровня Java и хочу использовать это значение ATTEMPTED_INPUT_RECORD_COUNT в приложении Java. Пожалуйста, помогите мне, как получить это значение счетчика в приложении Java. заранее спасибо - person user3463568; 25.02.2015
comment
Поправьте меня, если я ошибаюсь, но я не вижу никакой документации по API mlcp, кроме интерфейсов com.marklogic.contentpump.SequenceFile*. Так не используете ли вы недокументированную и неподдерживаемую функциональность для запуска mlcp? Это нормально для меня, но это означает, что вы, вероятно, сами по себе для других функций. Вы можете заглянуть в класс DocumentMapper и использовать счетчики ContentPumpStats и hadoop. Но вам понадобится объект Context, и я не знаю, как его получить. Также имейте в виду, что структура кода может измениться в любое время. - person mblakele; 25.02.2015

Вы ищете ручной способ подсчета или вы ищете программный способ подсчета, где у вас может быть код, который что-то делает с этим подсчетом?

Для последнего я второй ответ mblakele выше - коллекциями легко злоупотреблять, но я думаю, что это хороший вариант их использования, предполагая, что у вас уже есть некоторые другие документы в вашей базе данных и, следовательно, вы не можете просто подсчитать все документы в база данных. Используйте -output_collections, чтобы указать коллекцию, а затем используйте сервер XDBC, который использует MLCP, и выполните запрос xdmp:estimate, чтобы вернуть счетчик.

И если это последнее, мне интересно, используете ли вы какой-то инструмент ETL для вызова MLCP, например. Camel, Spring Integration или один из многих графических инструментов. Меня интересует улучшение интеграции MLCP с этими инструментами — см. https://github.com/rjrudin/ml-camel-client для примера.

person rjrudin    schedule 24.02.2015

Да, я с "мблакеле". MLCP поддерживает log4j для записи всех действий. Чтобы настроить log4j, перейдите в каталог «conf» каталога установки MLCP и измените содержимое «log4j.properties» с помощью

#Define the root logger with appender file
log = C:/mlcp-Hadoop2-1.2-3/Log
log4j.rootLogger = INFO, FILE

#Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=${log}/log.out

# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%d{dd/MM/yyyy HH:mm:ss} %p %c{2}: %m%n

Он создаст файл журнала в папке «Журнал», где вы можете получить количество загруженных записей. Например:

ЖУРНАЛ MLCP

person Navin Rawat    schedule 25.02.2015