CORB jobを実行すると、構成可能なスレッド数でこの大量のドキュメントを処理して、各ドキュメントURIのプロセスモジュールを実行して、指定した日付の前後にあるかどうかを判断できます。
CORBジョブは、load-date
要素を持つドキュメント(またはドキュメントが評価するための基準)を持つ22M URIのバッチを選択してから、load-date
要素にプロセスでカウントする必要がある値があるかどうかを評価できますこれらのドキュメントURIのすべてに対して実行されるモジュールです。ドキュメントをカウントする場合は、値を返します(ファイルサイズを小さくするには、1
でも十分です)。POST-BATCH-TASKオプションを、com.marklogic.developer.corb.PostBatchUpdateFileTaskを順番に使用するように設定します。
wc -l load-date-count.txt
例CORB options:
XCC-CONNECTION-URI=xcc://user:[email protected]:8010
URIS-MODULE=uris.xqy|ADHOC
PROCESS-MODULE=process.xqy|ADHOC
THREAD-COUNT=10
POST-BATCH-TASK=com.marklogic.developer.corb.PostBatchUpdateFileTask
EXPORT-FILE-NAME=load-date-count.txt
#
# you might want to enable the DISK-QUEUE, so that the 22M URIs doesn't blow the JVM memory
#DISK-QUEUE=true
CORBジョブが完了したときに、単一のファイルにこれらの値のすべてを書くこと
を次に、あなたは、出力ファイルの行数をカウントすることができます
例uris.xqyモジュール:
xquery version "1.0-ml";
let $uris := cts:uris("",(),
cts:element-query(xs:QName("load-date"), cts:true-query()))
return
(count($uris), $uris)
例process.xqyモジュール:
xquery version "1.0-ml";
declare variable $URI as xs:string? external;
if (fn:doc($URI)/*/load-date/xs:date(.) gt xs:date("2017-09-26")) then 1
else()
あなたのデイブとハンセンありがとうございました。私はXdmp:estimate、cts:directory-queryとXS:datetimeを使って達成することができます – Hari