2016-11-17 3 views
2

Можно ли импортировать данные из Amazon S3 в MarkLogic используяMarkLogic - S3 Импорт

  1. JavaScript/XQUERY API
  2. MarkLogic Содержание насоса
  3. Любой другой путь?

Пожалуйста, поделитесь ссылкой, если таковой имеется.

ответ

3

Я не эксперт AWS ни на одном участке, но если вы знаете расположение данных на S3, вы можете использовать xdmp:document-get() с префиксом http: // в $ location для получения документов. Вы также можете использовать xdmp:http-get(), возможно, для запроса местоположений ваших документов. Как только эта команда вернется, вы можете использовать обычный xdmp: document-insert.

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

Для большего набора данных вы можете захотеть управлять процессом извне. Вот несколько вариантов:

  • экспорт данных из S3 на локальную файловую систему, а затем использовать MLCP, чтобы отправить его MarkLogic
  • вставить документ, содержащий список ресурсов на S3, которые вы хотите импортировать; задайте задачи, которые будут каждый из них взять группу этих ресурсов и импортировать их с помощью xdmp: document-get()
  • используйте код Java, чтобы вытащить документ (или пакет документов) из S3, затем используйте Java Client API, чтобы вставить эти данные в MarkLogic
  • раз MarkLogic 9 выходит, используйте Data Movement SDK, который предназначен, чтобы сделать такие проекты, как это проще (по состоянию на момент написания статьи, DMSDK еще находится в разработке)
+0

Я настоятельно рекомендую Client API Java для этого случая использования. –

+0

@ dave-cassel Спасибо за ответ. Может ли _MLCP_ как-то работать для данных на S3? Он выполняет задание MapReduce, поэтому в идеале он должен.Импорт терабайт данных на локальный диск может оказаться не оптимальным решением. Кроме того, если кластер находится в AWS, передача данных составляет 2x (загрузка, а затем массовая загрузка с использованием MLCP). – blackzero

+1

@blackzero MLCP знает только два источника ввода для работы с: файловой системой и самой MarkLogic (для операций копирования и экспорта). Для MarkLogic 8 я считаю, что ваши лучшие ставки - это варианты 2 или 3 выше. –

0

нагрузки test.xml файл из AWS S3 в базу данных, связанную с вашим экземпляром REST API, используя службу/documents:

curl https://s3.amazonaws.com/yourbucket/test.xml | curl -v --digest --user user:password -H "Content-Type: application/xml" -X PUT -d @- "localhost:8052/v1/documents?uri=/docs/test.xml" 
  • заменить https://s3.amazonaws.com/yourbucket/test.xml с действительной URL хранения AWS S3
  • заменить user:password с действительными значениями
  • заменить localhost:8052 с URL вашего сервера приложений MarkLogic
0

Недавно я столкнулся с таким же вопросом и я следующий код MLCP для копирования данных, и он сработал.

mlcp export -host {host} -port {port} -username {username} -password {password} -output_file_path {S3 path} -collection_filter {collection name to be moved} 
0

Если настроить AWS credententials в инструмент администратора, вы можете использовать URL вида «s3: // ведро/ключ» для доступа к S3 для чтения или записи.

См EC2 guide См Stackoverflow similar question

Смежные вопросы