将 Spark 3 数据帧索引到 Apache Solr 8

问题描述

我已经设置了一个小型 Hadoop Yarn 集群,Apache Spark 正在其中运行。我有一些数据(JSON、CSV)上传到 Spark(数据框)进行一些分析。后来,我必须将所有数据帧数据索引到 Apache SOlr 中。我使用的是 Spark 3 和 Solr 8.8 版本。

在我的搜索中,我找到了一个解决方here,但它适用于不同版本的 Spark。因此,我决定向某人求助。

此任务是否有任何内置选项。我愿意使用 SolrJ 和 pySpark(不是 scal shell)。

解决方法

我自己找到了解决方案。到目前为止,Lucidword spark-solr 模块不支持这些版本的 Spark (3.0.2) 和 Solr (8.8)。我首先安装了 PySolr 模块,然后使用以下示例代码来完成我的工作:

import pysolr
import json

def solrIndexer(row):
    solr = pysolr.Solr('http://localhost:8983/solr/spark-test')
    obj = json.loads(row)
    solr.add(obj)

#load data to dataframe from HDFS
csvDF = spark.read.load("hdfs://hms/data/*.csv",format="csv",sep=",",inferSchema="true",header="true")

csvDF.toJSON().map(solrIndexer).count()

如果以上代码有更好的选择或改进,欢迎回答。