2015-12-24 55 views
3

我正試圖導入一個文件集合,其中某些文件以下劃線開頭。看起來Marklogic mlcp 8.0.4會默默地跳過這些文件,即使Marklogic本身似乎對這樣的文件名沒有問題。Marklogic內容泵(MLCP)默默忽略以下劃線開頭的文件

這是鋁塑複合命令我使用的是:

鋁塑複合-8.0-4 /斌/ mlcp.sh進口-host本地主機-port 8012 -username XXXXX -password XXXX -mode當地-input_file_path /用戶/測試/下載/ tempfolder33/-output_uri_replace 「^ * tempfolder33, ''」

其中類似 「/Users/test/Downloads/tempfolder33/schemas/bwb/_manifest.xml」 的文件名是一貫被mlcp忽略。

有關如何解決這個問題的任何想法?

回答

6

MarkLogic使用Hadoop的MapReduce的客戶端 - 核心庫(org.apache.hadoop)它定義了抽象類FileInputFormat。此類使用始終處於活動狀態的私有靜態最終PathFilter hiddenFileFilter。 此過濾器定義以「_」和「。」開頭的文件。作爲隱藏,這些文件將自動跳過,無論您自己定義的過濾器。

private static final PathFilter hiddenFileFilter = new PathFilter() { 
    public boolean accept(Path p) { 
     String name = p.getName(); 
     return !name.startsWith("_") && !name.startsWith("."); 
    } 
}; 

如果您在Java精通,你可以從這裏https://developer.marklogic.com/products/mlcp下載的鋁塑複合源副本,並試圖覆蓋從FileAndDirectoryInputFormat類FileInputFormat類保護listStatus方法不包括從FileInputFormat類hiddenFileFilter hadoop-mapreduce-client-core庫。

希望這有助於

彼得

+0

不是真的那麼精通Java的:-(也許Marklogic可以添加一個參數,以鋁塑複合來關閉該行爲,特別是因爲ML本身沒有限制,但我還是謝謝你,現在我明白爲什麼。 –

+1

@M_breeb沒有嘗試過,但也許荏苒你的數據,並導入從拉鍊提供旁路? – grtjn

+0

這似乎工作,創造性思維!(但仍然是一個麻煩...) –