首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MarkLogic CORB -如何避免运行corb时超时

MarkLogic CORB -如何避免运行corb时超时
EN

Stack Overflow用户
提问于 2020-02-19 18:32:51
回答 1查看 172关注 0票数 1

当运行大量数据时,如何避免CORB超时,提取超过1000万个文档pdf/xml?我需要减少线程数量和批处理大小吗?

uris模块:

代码语言:javascript
复制
let $uris := cts:uris(
(),
(),
cts:and-query((
    cts:collection-query("/sites"),
    cts:field-range-query("cdate","<","2019-10-01"),
    cts:not-query(
        cts:or-query((
            cts:field-word-query("dcax","200"),
            more code...,
            ))
    )
))
return (fn:count($uris), $uris)

process.xqy

代码语言:javascript
复制
declare variable $URI as xs:string external;
let $uris := fn:tokenize($URI,";")
let $outputJson := "/output/json/"
let $outputPdf := "/output/pdf/"

for $uri1 in $uris
let $accStr := fn:substring-before(fn:substring-after($uri1,"/sites/"),".xml")
let $pdfUri := fn:concat("/pdf/iadb/",$accStr,".pdf")
let $doc := fn:doc($uri1)
let $obj := json:object()
let $_ := map:put($obj,"PaginationOrMediaCount",fn:number($doc/rec/MediaCount))
let $_ := map:put($obj,"Abstract",fn:replace($doc/rec/Abstract/text(),"[^a-zA-Z0-9 ,.\-\r\n]",""))
let $_ := map:put($obj,"Descriptors",json:to-array($doc/rec/Descriptor/text()))
    let $_ := map:put($obj,"FullText",fn:replace($doc/rec/FullText/text(),"[^a-zA-Z0-9 ,.\-\r\n]",""))
let $_ := xdmp:save(
    fn:concat($outputJson,$accStr,".json"),
    xdmp:to-json($obj)
)
let $_ := if (fn:doc-available($pdfUri))
    then xdmp:save(
        fn:concat($outputPdf,$accStr,".pdf"),
        fn:doc($pdfUri)
    )
    else ()

return $URI
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-20 00:23:09

如果您共享PROCESS-MODULE的CoRB作业选项和URIS模块和的代码,那么诊断和建议改进就更容易了。

CoRB作业的一般概念是将工作分解为执行多个模块执行,而不是试图在单个执行中完成所有工作,以避免超时问题和过多的内存消耗。

例如,如果您想下载1,000万个文档,PROCESS-MODULE,URI模块将选择所有这些文档的URI,然后将每个URI发送到负责检索它的。根据线程计数,您可以一次下载多个文档,但它们都应该会很快返回。

URI模块的执行是超时,还是进程模块?

可以使用:xdmp:request-set-time-limit()将超时限制从默认限制提高到最大超时限制。

通常,流程模块应该快速执行,而不应该超时。一个可能的原因可能是在转换中执行了太多的工作(例如,将批处理大小的设置得非常大,并且一次做得太多),或者可能是配置错误或写得不好的查询(也就是说,在每次执行流程模块时,不要拿一个带有$URI值的文档,执行搜索和检索所有的文档)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60307049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档