Marklogic内容泵问题

时间:2014-03-18 11:07:49

标签: rdf marklogic dbpedia n-triples mlcp

我正在尝试使用MarkLogic内容泵将.nt格式的dbPedia数据集加载到MarkLogic中。我正在使用MarkLogic 7,在我的机器上运行端口8005上的XDBC服务器。我的数据存在于一个文件persondata_en.nt中,我正在使用以下命令加载它。

C:\mlcp-Hadoop2-1.2-1\bin\mlcp import -mode local ^
-host localhost -port 8005 -username admin -password admin ^
-input_file_path "C:\dbp\persondata_en.nt" ^
-input_file_type RDF

此命令会导致过早的EOF异常,如下所示。

2014-03-18 11:56:28.401 WARNING [1] (AbstractRequestController.runRequest): Error         parsing HTTP headers: Premature EOF, partial header line read: ''
2014-03-18 11:56:28.503 WARNING [1] (AbstractRequestController.runRequest): Error  parsing HTTP headers: Premature EOF, partial header line read: ''
2014-03-18 11:56:28.605 WARNING [1] (AbstractRequestController.runRequest): Error parsing HTTP headers: Premature EOF, partial header line read: ''
2014-03-18 11:56:28.707 WARNING [1] (AbstractRequestController.runRequest): Error parsing HTTP headers: Premature EOF, partial header line read: ''
2014-03-18 11:56:28.809 WARNING [1] (AbstractRequestController.runRequest): Error parsing HTTP headers: Premature EOF, partial header line read: ''
2014-03-18 11:56:28.810 INFO [1] (AbstractRequestController.runRequest): automatic query  retries (5) exhausted, throwing: com.marklogic.xcc.exceptions.ServerConnectionException:    Error parsing
 [Session: user=admin, cb={default} [ContentSource: user=admin, cb={none} [provider:  address=localhost/127.0.0.1:8005, pool=0/64]]]
 [Client: XCC/7.0-20140204]
 com.marklogic.xcc.exceptions.ServerConnectionException: Error parsing HTTP headers:     Premature EOF, partial header line read: ''
 [Session: user=admin, cb={default} [ContentSource: user=admin, cb={none} [provider:  address=localhost/127.0.0.1:8005, pool=0/64]]]
 [Client: XCC/7.0-20140204]

我使用了教程here中示例加载脚本中指定的几乎相同的命令。以前有人遇到过这个问题吗?任何帮助都会很棒。谢谢!

2 个答案:

答案 0 :(得分:1)

感谢您的帮助。我设法找出问题的原因。我没有正确配置MarkLogic XDBC服务器的设置。我按照文档中的说明重置了服务器,并且能够成功地将三元组插入到商店中。

答案 1 :(得分:0)

您是否尝试过-input_file_type rdf代替-input_file_type RDF?看http://docs.marklogic.com/guide/ingestion/content-pump我看到小写" rdf"在各种例子中。

一般来说,解析HTTP标头时出现错误:过早的EOF"表示服务器的响应中断。这不是一个非常常见的错误,但我已经看到它出于各种原因。

当JVM内存不足时会出现一个问题。在这种情况下,它将所有时间都花在垃圾收集上,并且连接超时。这似乎不太可能,因为persondata应该小于1-GiB并且mlcp不应该在内存中需要整个文件。但你可以通过制作一个较小的nt文件来测试这个理论,例如1%或10%的行。如果要查看GC运行的频率,请将-verbosegc添加到mlcp脚本中的JVM参数。

我看到的另一个问题是防火墙决定在N秒后关闭连接。另一个是严重超载的服务器 - 一个大量分页或无法让MarkLogic完成其工作的服务器。