3

我正在尝试导入一个文档集合,其中一些文件以下划线开头。似乎 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 忽略。

关于如何解决这个问题的任何想法?

4

1 回答 1

6

MarkLogic 使用定义了抽象 FileInputFormat 类的 hadoop-mapreduce-client-core 库 (org.apache.hadoop)。此类使用始终处于活动状态的私有静态最终 PathFilter hiddenFileFilter。此过滤器定义以“_”和“.”开头的文件。隐藏,无论您自己定义的过滤器如何,这些文件都将被自动跳过。

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

如果您精通 Java,则可以从此处下载 mlcp 源的副本https://developer.marklogic.com/products/mlcp并尝试从 FileAndDirectoryInputFormat 类中的 FileInputFormat 类覆盖受保护的 listStatus 方法,以不包括 hiddenFileFilter来自 hadoop-mapreduce-client-core 库中的 FileInputFormat 类。

希望这可以帮助

彼得

于 2015-12-28T10:23:20.187 回答