2016-11-17 54 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}