我正在尝试使用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中示例加载脚本中指定的几乎相同的命令。以前有人遇到过这个问题吗?任何帮助都会很棒。谢谢!
答案 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完成其工作的服务器。