Amazon s3 MarkLogic-S3导入

Amazon s3 MarkLogic-S3导入,amazon-s3,marklogic,mlcp,Amazon S3,Marklogic,Mlcp,我们可以使用以下方法将数据从AmazonS3导入MarkLogic吗 JavaScript/xqueryapi MarkLogic内容泵 还有别的办法吗 如果有,请分享参考资料。我不是AWS专家,但如果你知道S3上数据的位置,你可以使用http://前缀在$location中检索文档。您还可以使用,也许是用来查询文档的位置。一旦该命令返回,您就可以使用通常的xdmp:documentinsert 这种方法对于少数文件来说应该是合适的。如果您有一个要导入的大型集合,则必须考虑事务超时的可能性 对于

我们可以使用以下方法将数据从AmazonS3导入MarkLogic吗

  • JavaScript/xqueryapi
  • MarkLogic内容泵
  • 还有别的办法吗

  • 如果有,请分享参考资料。

    我不是AWS专家,但如果你知道S3上数据的位置,你可以使用http://前缀在$location中检索文档。您还可以使用,也许是用来查询文档的位置。一旦该命令返回,您就可以使用通常的xdmp:documentinsert

    这种方法对于少数文件来说应该是合适的。如果您有一个要导入的大型集合,则必须考虑事务超时的可能性

    对于较大的数据集,您可能希望从外部管理流程。以下是几个选项:

    • 将数据从S3导出到本地文件系统,然后使用将其发送到MarkLogic
    • 插入一个文档,该文档在S3中包含要导入的资源列表;生成任务,每个任务将获取一组这些资源,并使用xdmp:document-get()导入它们
    • 使用Java代码从S3中提取一个文档(或一批文档),然后使用将该数据插入MarkLogic
    • 一旦MarkLogic 9问世,就可以使用,这是为了使这样的项目更容易(在撰写本文时,DMSDK仍在开发中)

    使用/documents服务将test.xml文件从AWS S3 bucket加载到与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"
    
    • 替换
      https://s3.amazonaws.com/yourbucket/test.xml
      具有AWS S3存储的有效URL
    • 用有效值替换
      user:password
    • 用MarkLogic应用程序服务器的URL替换
      localhost:8052

    最近,我遇到了同样的问题,我使用了下面的MLCP代码在上面复制数据,并且成功了

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

    如果在管理工具中配置aws凭据,则可以使用“s3://bucket/key”形式的URL访问s3进行读写操作


    请参见

    我强烈推荐此用例使用Java客户端API。@dave cassel感谢您的回复。MLCP能以某种方式处理S3上的数据吗?它运行一个MapReduce作业,因此理想情况下应该是这样。在本地磁盘上导入TB级数据可能不是最佳解决方案。此外,如果集群位于AWS中,则数据传输应为2x(下载,然后使用MLCP批量上传)。@blackzero MLCP只知道两个输入源可供使用:文件系统和MarkLogic本身(用于复制和导出操作)。对于MarkLogic 8,我认为您的最佳选择是上面的选项2或3。