0

我已经设置了 SOLR。我曾经将数据(10 万)导入正常工作的 solr 索引。

现在我正在尝试将大数据(10 多万条记录)导入 solr 索引。我已经设置了 data-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.handler.dataimport.DataImporter$1.run(DataImporter.java:426)

我使用带有 4GB RAM 的 4 核处理器。

解决此问题需要哪些 mysql/java 配置更改?

4

1 回答 1

1

我想这与 Mysql 的关系比与 Solr 的关系更大,因为 mysql jdbc 驱动程序存在问题。在此处尝试此解决方法,这只是超出了 mysql 可以处理的数据限制。

于 2012-07-31T11:08:35.303 回答