Индексирование нескольких документов - PullRequest
0 голосов
/ 24 июня 2019

Я сталкиваюсь с ошибками при попытке индексировать несколько документов в solr с помощью spark-streaming с использованием solrj. Каждую запись я анализирую и индексирую, каждая micro-batch.

В приведенном ниже коде первый метод (с тегами) работает как положено. Второй метод (с тегами) ничего не делает, он не завершается ошибкой.

В первом варианте я индексирую запись для каждого раздела; бесполезный, но функциональный. Во втором методе я преобразовываю каждый элемент своих разделов в документ, а затем пытаюсь проиндексировать каждый из них, но не удается: в коллекции нет записей.

Я использую solrj 4.10 и spark-2.2.1.

//method 1
myDStream.foreachRDD { rdd => rdd.foreachPartition { records =>

  val solrServer = new HttpSolrServer(collectionUrl)

  val document = new SolrInputDocument()
  document.addField("key", "someValue")
  ...

  solrServer.add(document)
  solrServer.commit()
}}
//method 2
myDStream.foreachRDD { rdd => rdd.foreachPartition { records =>

  val solrServer = new HttpSolrServer(collectionUrl)

  records.map { record =>

    val document = new SolrInputDocument()
    document.addField("key", record.key)
    ...

    solrServer.add(document)
    solrServer.commit()
  }
}}

Я хотел бы понять, почему второй метод не работает, и найти решение для индексации нескольких документов.

1 Ответ

1 голос
/ 01 июля 2019

Решением было обработать записи через rdd s:

myDStream.foreachRDD { rdd => rdd.foreach { record =>

  val solrServer = new HttpSolrServer(collectionUrl)

  val document = new SolrInputDocument()
  document.addField("key", record.key)
  ...

  solrServer.add(document)
  solrServer.commit()
}}

См. Комментарий EricLavault выше для получения дополнительной информации о подозрении на источник проблемы.

...