簡體   English   中英

Solr增量導入查詢異常

[英]Solr delta import Query exception

這是我的數據庫配置文件,我能夠正確地完全導入,但是在增量導入時遇到問題

有兩個例外

  1. 與mysql相關的數據源異常
  2. DHI
 <dataConfig> <dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://10.30.2.32:3306/artemis" batchSize="-1" 

user =“用戶名” password =“密碼” />

 <document> <entity name="job" pk="job_id" query="SELECT * FROM job" deltaImportQuery="SELECT * FROM job WHERE job_id = '${dataimporter.delta.id}'" deltaQuery="SELECT job_id FROM job WHERE updated_date > convert_tz('${dataimporter.last_index_time}','+00:00','-05:30')"> <field column="job_id" name="jobId"/> <field column="keywords" name="keywords"/> <field column="speaciality" name="speaciality"/> <field column="salary_min" name="salaryMin"/> <field column="salary_max" name="salaryMax"/> <field column="created_date" name="createdDate"/> <field column="updated_date" name="updatedDate"/> <field column="updated_date" name="updatedDate"/> <field column="experience_from" name="experienceFrom"/> <field column="experience_to" name="experienceTo"/> <field column="job_title" name="jobTitle"/> <entity name="city" query="SELECT * FROM city where city_id ='${job.place_of_interview_id}'" deltaQuery="select city_id from city where updated_date >convert_tz('${dataimporter.last_index_time}','+00:00','-05:30')" parentDeltaQuery="select job_id from job where place_of_interview_id='${city.city_id}'" > <field column="name" name="city"/> <entity name="district" query="SELECT * FROM district where district_id='${city.district_id}'" deltaQuery="select district_id from district where updated_date > '${dataimporter.last_index_time}'" parentDeltaQuery="select city_id from city where district_id='${district.district_id}'" > <field column="name" name="district"/> <entity name="state" query="SELECT * FROM state where state_id='${district.state_id}'" deltaQuery="select state_id from state where updated_date > '${dataimporter.last_index_time}'" parentDeltaQuery="select district_id from district where state_id='${state.state_id}'" > <field column="name" name="state"/> <entity name="country" query="SELECT * FROM country where country_id='${state.country_id}'" deltaQuery="select country_id from country where updated_date > '${dataimporter.last_index_time}'" parentDeltaQuery="select state_id from state where country_id='${country.country_id}'" > <field column="name" name="country"/> <entity name="region" query="SELECT * FROM region where region_id='${country.region_id}'" deltaQuery="select region_id from region where updated_date > '${dataimporter.last_index_time}'" parentDeltaQuery="select country_id from country where region_id='${region.region_id}'" > <field column="name" name="region"/> </entity> </entity> </entity> </entity> </entity> <entity name="jobFunction" query="SELECT * FROM job_function where job_function_id='${job.job_function_id}'" deltaQuery="select job_function_id from job_function where updated_date > '${dataimporter.last_index_time}'" parentDeltaQuery="select job_id from job where job_function_id='${jobFunction.job_function_id}'" > <field column="name" name="jobFunction"/> <entity name="jobCategory" query="SELECT * FROM master_data where id='${jobFunction.job_category_id}'" deltaQuery="select id from master_data where updated_date > '${dataimporter.last_index_time}'" parentDeltaQuery="select job_function_id from job_function where job_category_id='${jobCategory.id}'" > <field column="name" name="jobCategory"/> </entity> </entity> <entity name="companyName" query="SELECT * FROM employer where employer_id='${job.employer_id}'" deltaQuery="select employer_id from employer where updated_date > '${dataimporter.last_index_time}'" parentDeltaQuery="select job_id from job where employer_id='${companyName.employer_id}'" > <field column="company_name" name="companyName"/> </entity> </entity> </document> </dataConfig> 

我在三角洲進口時遇到了例外

/29/2017, 6:25:47 PM
ERROR true
JdbcDataSource
Ignoring Error when closing connection
java.sql.SQLException: Streaming result set com.mysql.jdbc.RowDataDynamic@15196a0f is still active. No statements may be issued when any streaming result sets are open and in use on a given connection. Ensure that you have called .close() on any active streaming result sets before attempting more queries.
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:880)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:876)
    at com.mysql.jdbc.MysqlIO.checkForOutstandingStreamingData(MysqlIO.java:3111)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2366)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2594)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2541)
    at com.mysql.jdbc.ConnectionImpl.rollbackNoChecks(ConnectionImpl.java:4738)
    at com.mysql.jdbc.ConnectionImpl.rollback(ConnectionImpl.java:4630)
    at com.mysql.jdbc.ConnectionImpl.realClose(ConnectionImpl.java:4271)
    at com.mysql.jdbc.ConnectionImpl.close(ConnectionImpl.java:1515)
    at org.apache.solr.handler.dataimport.JdbcDataSource.closeConnection(JdbcDataSource.java:507)
    at org.apache.solr.handler.dataimport.JdbcDataSource.close(JdbcDataSource.java:492)
    at org.apache.solr.handler.dataimport.DocBuilder.closeEntityProcessorWrappers(DocBuilder.java:288)
    at org.apache.solr.handler.dataimport.DocBuilder.closeEntityProcessorWrappers(DocBuilder.java:290)
    at org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:277)
    at org.apache.solr.handler.dataimport.DataImporter.doDeltaImport(DataImporter.java:444)
    at org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:482)
    at org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:461)
3/29/2017, 6

java.lang.RuntimeException: java.lang.IllegalArgumentException: deltaQuery has no column to resolve to declared primary key pk='jobId'
    at org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:270)
    at org.apache.solr.handler.dataimport.DataImporter.doDeltaImport(DataImporter.java:444)
    at org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:482)
    at org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:461)
Caused by: java.lang.IllegalArgumentException: deltaQuery has no column to resolve to declared primary key pk='jobId'
    at org.apache.solr.handler.dataimport.DocBuilder.findMatchingPkColumn(DocBuilder.java:755)
    at org.apache.solr.handler.dataimport.DocBuilder.collectDelta(DocBuilder.java:808)
    at org.apache.solr.handler.dataimport.DocBuilder.collectDelta(DocBuilder.java:789)
    at org.apache.solr.handler.dataimport.DocBuilder.doDelta(DocBuilder.java:344)
    at org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:224)
    ... 3 more

您可以將<'$ {dataimporter.delta.id}'>替換為$ {dataimporter.delta.job_id}並進行測試。

deltaImportQuery:(僅在增量導入中使用)。存在命名空間$ {dih.delta。 可以在此查詢中使用的列名 }。 例如:從tbl中選擇*,其中id = $ {dih.delta.id} Solr1.4

如上所述,我們只能在增量名稱空間中使用列名稱。

參考:
https://wiki.apache.org/solr/DataImportHandler https://wiki.apache.org/solr/DataImportHandler#Configuration_in_data-config.xml

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM