2

在对 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 import 命令时,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 不能
在 com.marklogic.contentpump.TransformWriter.write(TransformWriter.java:97)
的 com.marklogic.contentpump.utilities.TransformHelper.getTransformInsertQry(TransformHelper.java:163)转换为 org.apache.hadoop.io.Text
。 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(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
在 java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
在 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。

4

1 回答 1

0

听起来像一个错误。遇到此问题的客户应联系支持

于 2015-03-31T01:40:50.917 回答