2016-11-17 77 views
2

我們能否從導入Amazon S3的數據到MarkLogic使用MarkLogic - S3進口

  1. 的JavaScript/XQuery的API
  2. MarkLogic內容泵
  3. 任何其他方式?

請分享參考,如果有的話。

回答

3

我不是AWS專家,但是如果您知道S3上的數據位置,則可以使用xdmp:document-get()(帶有http位置的$:前綴)來檢索文檔。您也可以使用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仍處於發展)從AWS S3
+0

我會強烈建議Java客戶端API用於該用途的情況。 –

+0

@ dave-cassel謝謝你的迴應。 _MLCP_能以某種方式爲S3上的數據工作嗎?它運行一個MapReduce工作,所以理想情況下它應該。在本地磁盤上導入千兆字節的數據可能不是最佳解決方案。另外,如果集羣位於AWS,則數據傳輸爲2倍(下載,然後使用MLCP進行批量上傳)。 – blackzero

+1

@blackzero MLCP只知道要使用的兩個輸入源:文件系統和MarkLogic本身(用於複製和導出操作)。對於MarkLogic 8,我認爲你最好的選擇是上面的選項2或3。 –

0

負載的test.xml文件存儲區與使用/ documents服務的REST API實例關聯的數據庫中:

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" 
  • 與AWS S3存儲的有效URL取代https://s3.amazonaws.com/yourbucket/test.xml
  • 與有效值替換user:password
  • 與MarkLogic應用服務器的URL代替localhost:8052
0

最近我面臨着同樣的問題,我用以下用於複製數據的MLCP代碼,並且工作正常。

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