Marklogic 内容泵 (MLCP) 默默地忽略以下划线开头的文件

Marklogic content pump (MLCP) silently ignores files starting with underscore

我正在尝试导入一些文件以下划线开头的文档集。似乎 Marklogic mlcp 8.0.4 正在默默地跳过这些文件,即使 Marklogic 本身似乎对这样的文件名没有问题。

这是我正在使用的 mlcp 命令:

mlcp-8.0-4/bin/mlcp.sh import -host localhost -port 8012 -username xxxxx -password xxxx -mode local -input_file_path /Users/test/Downloads/tempfolder33/ -output_uri_replace "^.*tempfolder33,''"

像“/Users/test/Downloads/tempfolder33/schemas/bwb/_manifest.xml”这样的文件名总是被 mlcp 忽略。

关于如何解决这个问题有什么想法吗?

MarkLogic 使用定义抽象 FileInputFormat class 的 hadoop-mapreduce-client-core 库 (org.apache.hadoop)。 class 使用始终处于活动状态的 private static final 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 class 中 FileInputFormat class 的受保护的 listStatus 方法class 不包含来自 hadoop-mapreduce-client-core 库的 FileInputFormat class 的 hiddenFileFilter。

希望对您有所帮助

彼得