2012-07-31 89 views
0

我设置了SOLR。我曾经将数据(十万个)导入solr索引,它可以正常工作。SOLR中的大数据导致数据导入失败

我现在想以大数据(10+万卢比记录)导入到Solr的索引。我已经安装数据-config.xml文件,然后我开始全进口,但它失败并在下面给出

索引提到的错误而失败。回滚所有更改。

我存储Solr的启动日志文件solr.err赋予错误:

Jul 31, 2012 10:19:33 AM org.apache.solr.update.DirectUpdateHandler2 rollback 
SEVERE: Ignoring Error when closing connection 
    at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:637) 
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2677) 
    at com.mysql.jdbc.ConnectionImpl.rollback(ConnectionImpl.java:4749) 
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2677) 
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2627) 
    at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:841) 
    at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:681) 
    ... 6 more 
Jul 31, 2012 10:19:44 AM org.apache.solr.update.DirectUpdateHandler2 rollback 
SEVERE: Ignoring Error when closing connection 
    at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:637) 
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2677) 
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2709) 
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2677) 
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2709) 
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2677) 
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2627) 
    at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:841) 
    at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:681) 
    ... 6 more 
Jul 31, 2012 10:19:44 AM org.apache.solr.update.DirectUpdateHandler2 rollback 

SEVERE: Ignoring Error when closing connection at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:637) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2677)

Jul 31, 2012 10:19:44 AM org.apache.solr.update.DirectUpdateHandler2 rollback 
INFO: end_rollback 
Jul 31, 2012 10:19:44 AM org.apache.solr.handler.dataimport.JdbcDataSource closeConnection 
SEVERE: Ignoring Error when closing connection 

com.mysql.jdbc.PacketTooBigException: Packet for query is too large (7959657 > 1048576). You can change this value on the server by setting the max_allowed_packet' variable. 
at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:637) 
    at com.mysql.jdbc.MysqlIO.getResultSet(MysqlIO.java:420) 
    at com.mysql.jdbc.MysqlIO.readResultsForQueryOrUpdate(MysqlIO.java:3118) 
    at com.mysql.jdbc.MysqlIO.readAllResults(MysqlIO.java:2288) 
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2709) 
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2677) 
    at com.mysql.jdbc.ConnectionImpl.rollbackNoChecks(ConnectionImpl.java:4863) 
    at com.mysql.jdbc.ConnectionImpl.rollback(ConnectionImpl.java:4749) 
    at com.mysql.jdbc.ConnectionImpl.realClose(ConnectionImpl.java:4358) 
    at com.mysql.jdbc.ConnectionImpl.close(ConnectionImpl.java:1607) 

@ ataConfig.java:342) 在org.apache.solr.handler .dataimport.DataImporter.doFullImport(DataImporter.java:383) 在org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:445) 在org.apache.solr.handl er.dataimport.DataImporter $ 1.run(DataImporter.java:426)

我使用4核处理器4GB内存。

什么需要的MySQL/Java配置变更来解决这个问题?

+0

难道你没有看到MySQL报告“你可以通过设置max_allowed_pa​​cket'变量来更改服务器上的这个值吗?这就是你需要做的。 – 2012-07-31 11:28:52

回答

1

我想这更多的是与MySQL比Solr的,如MySQL JDBC驱动程序时遇到的问题。尝试this workaround here,这只会增加mysql可以处理的数据的限制。

+0

即使在设置了max_allowed_pa​​cket之后,它仍然给出java堆空间问题,通过在使用java启动solr时增加堆大小来解决问题-Xmx1582m -jar start.jar – 2012-08-03 08:25:42