【问题标题】:Marklogic mlcp import operation with filename-as-collection and javascript transform throws exception使用文件名作为集合和 javascript 转换的 Marklogic mlcp 导入操作引发异常
【发布时间】:2015-03-26 08:14:14
【问题描述】:

在对 Marklogic 8 和 Marklogic Content Pump 进行了一些试验后,我遇到了将数据导入 Marklogic 数据库的问题。我正在尝试运行 mlcp import 操作以从一组 csv 文件中加载数据,输入设置如下:

-input_file_path content/csv/  
-input_file_pattern ".*\.csv"  
-input_file_type delimited_text

此外,我正在尝试一些额外的设置来根据我的需要自定义导入。我尝试过的一种设置是-transform_module 设置,用于应用自定义的基于 javascript 的转换模块,以便在加载期间执行一些额外的转换,如下所示:

-transform_module /transform/customTransform.sjs

当我使用这些设置运行 mlcp 导入命令时,mlcp 正确加载了文档,并且转换按预期执行。

我尝试的另一个设置是-filename_as_collection 设置,用于为每个导入的文档分配一个集合,该集合使用文档来源的文件名。我运行了一些测试并验证了使用此设置正确分配了集合。

所以-transform_module-filename_as_collection 设置单独按预期工作,但是当我尝试在一个导入操作中同时应用这两个设置时会出现问题。我在命令窗口中收到以下错误消息:

15/03/25 11:01:51 错误 contentpump.MultithreadedMapper: com.marklogic.contentpump.ContentWithFileNameWritable 无法转换为 org.apache.hadoop.io.Text
java.lang.ClassCastException:com.marklogic.contentpump.ContentWithFileNameWritable 无法转换为 org.apache.hadoop.io.Text
在 com.marklogic.contentpump.utilities.TransformHelper.getTransformInsertQry(TransformHelper.java:163)
在 com.marklogic.contentpump.TransformWriter.write(TransformWriter.java:97)
在 com.marklogic.contentpump.TransformWriter.write(TransformWriter.java:46)
在 org.apache.hadoop.mapreduce.task.TaskInputOutputContextImpl.write(TaskInputOutputContextImpl.java:85)
在 org.apache.hadoop.mapreduce.lib.map.WrappedMapper$Context.write(WrappedMapper.java:106)
在 com.marklogic.contentpump.DocumentMapper.map(DocumentMapper.java:46)
在 com.marklogic.contentpump.DocumentMapper.map(DocumentMapper.java:32)
在 com.marklogic.contentpump.BaseMapper.runThreadSafe(BaseMapper.java:51)
在 com.marklogic.contentpump.MultithreadedMapper$MapRunner.run(MultithreadedMapper.java:376)
在 java.util.concurrent.Executors$RunnableAdapter.call(未知来源)
在 java.util.concurrent.FutureTask.run(未知来源)
在 java.util.concurrent.ThreadPoolExecutor.runWorker(未知来源)
在 java.util.concurrent.ThreadPoolExecutor$Worker.run(未知来源)
在 java.lang.Thread.run(Unknown Source)

这是我正在执行的完整命令:
mlcp import -input_file_path content/csv/ -input_file_pattern ".*\.csv" -input_file_type delimited_text -delimiter ";" -delimited_root_name rootname -namespace http://marklogic.com/somenamespace -transform_module /transform/customTransform.sjs -filename_as_collection

我正在一台 Windows 8.1 机器上运行 Marklogic 8.0-1.1 开发人员版和 mlcp 1.3-1。

【问题讨论】:

    标签: marklogic mlcp


    【解决方案1】:

    听起来像一个错误。遇到这种情况的客户应该contact Support

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多