首页 > 解决方案 > 不会尝试使用 SASL 进行身份验证(未知错误)

问题描述

我尝试通过 Spark 从 Solr 查询数据。我遇到了 ZooKeeper 连接问题。我已经按如下方式启动了 solr:solr start(不是 solr cloud)以及另一个 cmd 上的 zkserver。

请看一下我的代码:

object solr extends App {

  val zkHost = "127.0.0.1:57864"
  val collection = "website"
  val queryStr = "*:*"

  val conf = new SparkConf().setMaster("local").setAppName("My App")
  val sc = new SparkContext(conf)

  val solrRDD: SelectSolrRDD = new SelectSolrRDD(zkHost, collection, sc)
  val rdd: RDD[SolrDocument]  = solrRDD.query(queryStr)

  val words: RDD[String] = rdd.map(doc => if (doc.containsKey("the")) doc.get("the").toString else "")

  val counts = words
    .map(word => (word, 1))
    .reduceByKey(_ + _)

  counts.foreach(println)
  System.out.println("Total words: " + counts.count());

  sc.stop()
}

我也尝试过,val zkHost = "localhost:2181"但我变成了同样的错误。

我的错误看起来像:

19/03/12 15:59:09 INFO ClientCnxn: Opening socket connection to server 127.0.0.1/127.0.0.1:57864. Will not attempt to authenticate using SASL (unknown error)
19/03/12 15:59:10 INFO ClientCnxn: Socket error occurred: 127.0.0.1/127.0.0.1:57864: Connection refused: no further information
19/03/12 15:59:11 INFO ClientCnxn: Opening socket connection to server 127.0.0.1/127.0.0.1:57864. Will not attempt to authenticate using SASL (unknown error)
19/03/12 15:59:12 INFO ClientCnxn: Socket error occurred: 127.0.0.1/127.0.0.1:57864: Connection refused: no further information

......而且这不断。最后:

Exception in thread "main" com.google.common.util.concurrent.UncheckedExecutionException: org.apache.solr.common.SolrException: java.util.concurrent.TimeoutException: Could not connect to ZooKeeper 127.0.0.1:57864 within 60000 ms

有谁知道我想念什么?

标签: scalaapache-sparksolr

解决方案


我认为您的问题是您需要运行 solr cloud,因为 solr 的单个节点不需要 Zookeeper。

当您创建时,SelectSolrRDD您传递的是 Zookeeper 主机,这意味着连接到 Solr Cloud 实例而不是单个节点,这可能是 Zookeeper 不知道您在说什么的原因。

此外,您的 solr zookeeper 合奏通常应如下所示:

val zkHost = "zkhost1:2181,zkhost2:2181,zkhost2:2181/solr"

请注意/solr最后是 Zookeeper 中 Solr Cloud 保存其内容的路径。


推荐阅读