【发布时间】: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。
【问题讨论】: