索引多个文档
Indexing multiple documents
我在尝试使用 solrj
和 spark-streaming
索引 solr
中的多个文档时遇到错误。我解析和索引的每条记录,每条 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()
}
}}
我想了解为什么第二种方法不起作用,并找到解决多文档索引的方法。
解决方案是通过 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 的评论,了解有关问题来源怀疑的更多信息。
我在尝试使用 solrj
和 spark-streaming
索引 solr
中的多个文档时遇到错误。我解析和索引的每条记录,每条 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()
}
}}
我想了解为什么第二种方法不起作用,并找到解决多文档索引的方法。
解决方案是通过 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 的评论,了解有关问题来源怀疑的更多信息。