индексирование огромной таблицы записей в облаке apache solr - PullRequest
0 голосов
/ 28 декабря 2018

У меня есть таблица Кассандры с 9 миллионами записей, и мой размер данных составляет 500 МБ.У меня есть облако Solr с 3 узлами (3 осколка и 2 реплики) с тремя внешними ансамблями Zookeeper.Моя Кассандра - это кластер из 1 узла.Я пытаюсь проиндексировать эту таблицу с помощью Apache Solr, но мой запрос получает тайм-аут, как только я начинаю полный импорт.

Я могу cqlsh и получать записи, но мне не удается его проиндексировать.Вот мой прикрепленный solr.log ...

Caused by: org.apache.solr.handler.dataimport.DataImportHandlerException: Unable to execute query: SELECT * from counter.series Processing Document # 1
        at org.apache.solr.handler.dataimport.DataImportHandlerException.wrapAndThrow(DataImportHandlerException.java:69)
        at org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.<init>(JdbcDataSource.java:318)
        at org.apache.solr.handler.dataimport.JdbcDataSource.getData(JdbcDataSource.java:279)
        at org.apache.solr.handler.dataimport.JdbcDataSource.getData(JdbcDataSource.java:54)
        at org.apache.solr.handler.dataimport.SqlEntityProcessor.initQuery(SqlEntityProcessor.java:59)
        at org.apache.solr.handler.dataimport.SqlEntityProcessor.nextRow(SqlEntityProcessor.java:73)
        at org.apache.solr.handler.dataimport.EntityProcessorWrapper.nextRow(EntityProcessorWrapper.java:244)
        at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:475)
        at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:414)
        ... 5 more
Caused by: java.sql.SQLTransientConnectionException: TimedOutException()
        at org.apache.cassandra.cql.jdbc.CassandraStatement.doExecute(CassandraStatement.java:189)
        at org.apache.cassandra.cql.jdbc.CassandraStatement.execute(CassandraStatement.java:205)
        at org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.executeStatement(JdbcDataSource.java:338)
        at org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.<init>(JdbcDataSource.java:313)
        ... 12 more
Caused by: TimedOutException()
        at org.apache.cassandra.thrift.Cassandra$execute_cql3_query_result.read(Cassandra.java:37865)
        at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:78)
        at org.apache.cassandra.thrift.Cassandra$Client.recv_execute_cql3_query(Cassandra.java:1562)
        at org.apache.cassandra.thrift.Cassandra$Client.execute_cql3_query(Cassandra.java:1547)
        at org.apache.cassandra.cql.jdbc.CassandraConnection.execute(CassandraConnection.java:468)
        at org.apache.cassandra.cql.jdbc.CassandraConnection.execute(CassandraConnection.java:494)
        at org.apache.cassandra.cql.jdbc.CassandraStatement.doExecute(CassandraStatement.java:164)
        ... 15 more

Мне нужна помощь в индексировании таблицы либо пакетно, либо с помощью нескольких потоков.Приветствуется любая помощь или предложение .. db-data-config.xml:

<dataConfig>
        <dataSource type="JdbcDataSource" driver="org.apache.cassandra.cql.jdbc.CassandraDriver" url="jdbc:cassandra://192.168.0.7:9160/counter" user="cassandra" password="cassandra" autoCommit="true" />
        <document>
                <entity name="counter" query="SELECT * from counter.series;" autoCommit="true">
                        <field column="serial" name="serial" />
                        <field column="random" name="random" />
                        <field column="remarks" name="remarks" />
                        <field column="timestamp" name="timestamp" />
                 </entity>
        </document>
</dataConfig>

solrconfig.xml

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
  <str name="config">db-data-config.xml</str>
</lst>

schema.xml

<field name="remarks" type="string" indexed="false" stored="false" required="false" />
   <field name="serial" type="string" indexed="true" stored="true" required="true" />
   <field name="random" type="string" indexed="false" stored="true" required="true" />
   <field name="timestamp" type="string" indexed="false" stored="false" required="false" />

1 Ответ

0 голосов
/ 28 декабря 2018

Скорее всего, проблема заключается в размере полезной нагрузки для отправки данных в Solr.По умолчанию, когда batchSize не указано в JdbcDataSource, значение по умолчанию равно 500. Похоже, в вашем случае это слишком много.Вы должны использовать меньшие числа или увеличить настройки тайм-аута на стороне Solr

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...