问题描述
我已经设置了一个小型 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()
如果以上代码有更好的选择或改进,欢迎回答。