Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Solr中插入大量数据的最佳方法_Java_Apache Spark_Solr - Fatal编程技术网

Java 在Solr中插入大量数据的最佳方法

Java 在Solr中插入大量数据的最佳方法,java,apache-spark,solr,Java,Apache Spark,Solr,我有一些数据,我必须每天将其输入到Solr中,每天的数据约为10-12 GB,我必须在过去1年中进行一次追赶工作,每天的数据约为10-12 GB 我使用的是Java,我需要在我的数据中进行部分更新,如果相同的唯一键再次出现,我将docValues与TextField一起使用 最初,我使用了一种顺序方法,这需要花费大量的时间(从S3读取数据,然后以60k的批量添加到Solr中) 我发现这个回购协议: , 但我无法理解实现,因为我需要修改一些评分逻辑的字段数据,所以编写了定制的spark代码 然后

我有一些数据,我必须每天将其输入到Solr中,每天的数据约为10-12 GB,我必须在过去1年中进行一次追赶工作,每天的数据约为10-12 GB

我使用的是Java,我需要在我的数据中进行部分更新,如果相同的唯一键再次出现,我将docValues与TextField一起使用

最初,我使用了一种顺序方法,这需要花费大量的时间(从S3读取数据,然后以60k的批量添加到Solr中)

我发现这个回购协议:

,

但我无法理解实现,因为我需要修改一些评分逻辑的字段数据,所以编写了定制的spark代码

然后我在Solr中创建了4个节点(在同一个IP上),并使用Spark插入数据,最初是因为Spark创建的分区比Solr节点多,而且指定的“执行者”也比节点多,所以需要花费更多的时间

然后我将RDD重新分区为4个(Solr节点的数量),指定了4个执行器,然后插入花费的时间更少并且成功了,但是当我运行相同的程序一个月后,一个或多个Solr节点继续下降,我在HD上有足够的可用空间,并且很少我的ram使用量被占用

请给我一个解决这个问题的方法,我有8核CPU, 或者我应该为Solr上的不同节点使用不同的系统吗


谢谢

我不确定spark是否是将那么多数据加载到solr中的最佳方式

将数据加载到solr中的可能选项有:

  • 通过hbase indexer(也称为批处理索引器)在hbase表和solr索引之间同步数据
  • 您还可以实现几乎实时的hbase lily索引器
  • 您还可以使用solr的jdbc实用程序——我认为这是最好的。您可以通过spark将数据从s3加载读取到配置单元表中。然后,您可以在您的配置单元表中实现solr jdbc,相信我,它非常快

  • 如果您想了解其中任何一项的更多信息,请告诉我。

    我是否能够对Solr?进行自定义添加,因为我将对字段数据进行一些修改,以增加文档的分数。这也是一个好的选择吗?,我没有正确理解它,所以使用spark编写了自定义代码。您可以使用spark solr,但您的应用程序可能会受到性能问题的影响。如果Lucidworks/spark solr适合您希望处理的数据量,那么它是一个很好的api尝试。