【发布时间】:2014-05-21 12:29:38
【问题描述】:
我正在使用 solr 4.7.1 并尝试进行完全导入。我的数据源是 mysql 中的一个表。它有 10000000 行和 20 列。
每当我尝试执行完整导入时,solr 都会停止响应。但是当我尝试导入 400000 或更少时它工作正常。
如果我尝试导入的数量超过此 solr 将不会索引结果,它会停止响应或显示“索引失败”。在错误日志中显示“无法执行查询”。但我不明白查询对于较少数量的记录如何运行良好,但当我运行更多记录时失败
我的系统配置如下
CPU-i7 内存 -6Gb OS-64 位 windows 7 我无法弄清楚问题是什么,我尝试将 max_allowed_packet 增加到 1000M 甚至 java 堆大小。
请帮忙提前谢谢
这是错误代码
`处理时出现异常:播放器名称文档:SolrInputDocument(字段:[]):org.apache.solr.handler.dataimport.DataImportHandlerException:无法执行查询:SELECT player_id,firstname,lastname,value1,value2,value3,value4 ,value5,value6,value7,value8,value9,value10,value11,value18,value19,value20, country_id, playername_modtime,player_flag from playername WHERE 'true' != 'false' OR playername.playername_modtime > '2014-05-23 10: 38:56' 在 org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.(JdbcDataSource.java:281) 处 org.apache.solr.handler.dataimport.DataImportHandlerException.wrapAndThrow(DataImportHandlerException.java:71) 处理文档 #1 ) 在 org.apache.solr.handler.dataimport.JdbcDataSource.getData(JdbcDataSource.java:42) 在 org.apache.solr 的 org.apache.solr.handler.dataimport.JdbcDataSource.getData(JdbcDataSource.java:238)。 handler.dataimport.SqlEntityProcessor.initQuery(SqlEntityProcessor.java:59) 在 org.apache.solr.handler.dataimport.SqlEnti tyProcessor.nextRow(SqlEntityProcessor.java:73) 在 org.apache.solr.handler.dataimport.EntityProcessorWrapper.nextRow(EntityProcessorWrapper.java:243) 在 org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:第477章.handler.dataimport.DocBuilder.execute(DocBuilder.java:239) 在 org.apache.solr.handler.dataimport.DataImporter.doFullImport(DataImporter.java:411) 在 org.apache.solr.handler.dataimport.DataImporter.runCmd (DataImporter.java:483) at org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:464) 原因:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
从服务器成功接收到的最后一个数据包是 130,037 毫秒前。最后一个成功发送到服务器的数据包是在 130,038 毫秒前。在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 在 java.lang.reflect.Constructor.newInstance(Unknown Source)在 com.mysql.jdbc.Util.handleNewInstance(Util.java:409) 在 com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1127) 在 com.mysql.jdbc.MysqlIO.nextRowFast(MysqlIO.java:2288) ) 在 com.mysql.jdbc.MysqlIO.nextRow(MysqlIO.java:2044) 在 com.mysql.jdbc.MysqlIO.readSingleRowSet(MysqlIO.java:3549) 在 com.mysql.jdbc.MysqlIO.getResultSet(MysqlIO.java: 489) 在 com.mysql.jdbc.MysqlIO.readResultsForQueryOrUpdate(MysqlIO.java:3240) 在 com.mysql.jdbc.MysqlIO.readAllResults(MysqlIO.java:2411) 在 com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java :2834) 在 com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2832) 在 com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2781) 在 com.mysql.jdbc.Statement Impl.execute(StatementImpl.java:908) 在 com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:788) 在 org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.(JdbcDataSource.java:274) 。 .. 12 更多原因:java.io.EOFException:无法读取来自服务器的响应。预期读取 6 个字节,在连接意外丢失之前读取 4 个字节。在 com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:3161) 在 com.mysql.jdbc.MysqlIO.nextRowFast(MysqlIO.java:2269) ... 23 更多 5/23/2014 8:32:18 PM错误 DataImporter Full Import failed:java.lang.RuntimeException: java.lang.RuntimeException: org.apache.solr.handler.dataimport.DataImportHandlerException: Unable to execute query: SELECT player_id,firstname,lastname,value1,value2, value3,value4,value5,value6, value7,value8,value9,value10,value11,value18,value19,value20, country_id, playername_modtime,player_flag from playername WHERE 'true' != 'false' OR playername.playername_modtime > '2014-05-23 10:38:56' Processing Document #1 Last Check: 5/23/2014 8:36:34 PM`
【问题讨论】:
-
您收到的错误消息肯定比“索引失败”更多。请编辑您的问题以显示完整和准确的错误消息,从日志中剪切和粘贴,而不是解释。
-
嗨,安迪,感谢您的回复,我在日志中得到的错误是“无法执行查询”。但我不明白查询对于较少的记录数如何运行良好,但当我运行更多时失败记录数
-
这个异常是 CommunicationsException 并且由于链接失败。你的mysql是在不同的机器上还是在同一台机器上?
-
您好,谢谢您的回复,所有东西都在同一台机器上。在本地主机上运行。但是如果它是链接失败,为什么链接只因大量数据而失败,但对于较少的数据运行良好数据。请帮助,已经 5 天了,我只是无法弄清楚