2017-03-14 1 views
0

mySql에서 dih를 사용하여 대용량 데이터를 가져 오려고합니다. 모두 1000 만 개 기록을 가져 오는 경우 다음 MySQL을DIH를 사용하여 대용량 데이터를 solr로 가져올 수 없습니다.

<dataSource batchSize="-1" driver="com.mysql.jdbc.Driver" ..... /> 

에 대한 BATCHSIZE = -1과 데이터 소스입니다. 하지만 결국에는 전체 가져 오기에 실패했습니다. 로그에서 다음 예외가 발생합니다. :

2017-03-14 07:27:04.429 ERROR (Thread-14) [ x:companyData] o.a.s.h.d.DataImporter Full Import failed:java.lang.RuntimeException: java.lang.RuntimeException: org.apache.solr.handler.dataimport.DataImportHandlerException: java.sql.SQLException: Operation not allowed after ResultSet closed 
    at org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:270) 
    at org.apache.solr.handler.dataimport.DataImporter.doFullImport(DataImporter.java:416) 
    at org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:475) 
    at org.apache.solr.handler.dataimport.DataImporter.lambda$runAsync$0(DataImporter.java:458) 
    at org.apache.solr.handler.dataimport.DataImporter$$Lambda$85/252359661.run(Unknown Source) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.RuntimeException: org.apache.solr.handler.dataimport.DataImportHandlerException: java.sql.SQLException: Operation not allowed after ResultSet closed 
    at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:416) 
    at org.apache.solr.handler.dataimport.DocBuilder.doFullDump(DocBuilder.java:329) 
    at org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:232) 
    ... 5 more 

어떤 도움을 주시면 감사하겠습니다.

답변

1

직면 한 오류는 Solr에 대한 것이 아니라 데이터베이스에 액세스하는 방식과 관련이 있습니다.

예외를 보면 : java.sql.SQLException: Operation not allowed after ResultSet closed입니다.

batchSize 매개 변수를 다른 값으로 변경하는 것이 좋습니다 (예 : 1000).

BatchSize에서 옵션 (종종 데이터 가져 오기 핸들러를 실행할 때 메모리 부족 방지 에 사용되는) 메모리 사용량을 줄이기 위해 일괄 적으로 데이터베이스 테이블 의 행을 검색하는 데 사용됩니다. 낮은 배치 크기 일수록 더 느릴 수 있지만이 옵션은 이 가져 오기 프로세스의 속도에 영향을 미치지 않습니다.

+0

예 커넥터가 문제였습니다. 나이가 든 SQL 커넥터가 제대로 지원하지 않는다고 생각합니다. 5.21에서는 실패했지만 5.40에서는 정상적으로 실행되었습니다 !!! – ashwinbhy