我正在关注this示例,以便从Solr获取数据到我的Scala Spark程序。以下是我的代码:
val solrURL = "someurl"
val collectionName = "somecollection"
val solrRDD = new SelectSolrRDD(solrURL,collectionName,sc)
val solrQuery=new SolrQuery("somequery")
solrQuery.setTimeAllowed(0)
val solrDataRDD=solrRDD.query(solrQuery)
当我在本地Spark集群上运行此代码时,我在new selectSolrRDD
行获得以下异常:
java.lang.NoSuchMethodError: org.apache.solr.client.solrj.impl.CloudSolrClient$Builder.withHttpClient(Lorg/apache/http/client/HttpClient;)Lorg/apache/solr/client/solrj/impl/SolrClientBuilder;
我在StackOverflow上查看了其他一些答案但没有任何效果。
问题在于您的打包和部署(假设您正在使用maven,您的pom.xml)。问题是运行Spark应用程序时未加载Solr客户端库。您需要将应用程序和任何依赖项打包到“超级jar”中以便部署到群集。
看看spark-solr如何设置它。他们使用maven-shade-plugin来生成超级罐。
我的集群中已经存在了一些火星溶剂,这些垃圾与我正在使用的罐子相冲突。删除这些罐子后,我的代码工作正常。