2

我正在尝试使用 MarkLogic 内容泵将 .nt 格式的 dbPedia 数据集加载到 MarkLogic 中。我正在使用 MarkLogic 7,XDBC 服务器在我的机器上的端口 8005 上运行。我的数据存在于文件 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

此命令导致 Premature 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]

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

4

2 回答 2

1

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

于 2014-03-19T10:49:22.163 回答
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 完成其工作的服务器。

于 2014-03-18T15:40:38.637 回答