我正在尝试导入文档集合,其中某些文件以下划线开头。似乎Marklogic mlcp 8.0.4正在默默地跳过这些文件,即使Marklogic本身似乎对这样的文件名也没有问题。
这是我正在使用的mlcp命令:
mlcp-8.0-4 / bin / mlcp.sh import -host本地主机-port 8012-用户名
xxxxx-密码xxxx -mode本地-input_file_path
/用户/测试/下载/ tempfolder33 / -output_uri_replace
“^。* tempfolder33,”“
mlcp始终忽略“/Users/test/Downloads/tempfolder33/schemas/bwb/_manifest.xml”之类的文件名。
有关如何解决此问题的任何想法?
最佳答案
MarkLogic使用hadoop-mapreduce-client-core库(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下载mlcp源的副本,并尝试覆盖FileAndDirectoryInputFormat类中FileInputFormat类中受保护的listStatus方法,以不包括hadoop-mapreduce-client-中FileInputFormat类中的hiddenFileFilter。核心库。
希望这可以帮助
彼得