2016-07-11 105 views
2

从ElasticSearch读取数据我给下面的代码使用获取连接错误,而使用Apache星火和斯卡拉

val conf = new org.apache.spark.SparkConf() 
     .setMaster("local[*]") 
     .setAppName("es-example") 
     .set("es.nodes", "search-2meoihmu.us-est-1.es.amazonaws.com") 

val sc = new org.apache.spark.SparkContext(conf) 
val resource = "index/data" 
val count = sc.esRDD(resource).count() 
println(count) 

elastic search version=1.5.2 
spark version=1.5.2 
Scala version=2.10.4 

,并给出库的依赖关系如下,

libraryDependencies += "org.elasticsearch" % "elasticsearch-spark_2.10" % "2.1.3" 

运行程序时出现以下错误

Exception in thread "main" org.elasticsearch.hadoop.rest.EsHadoopNoNodesLeftException: Connection error (check network and/or proxy settings)- all nodes failed 

如何从弹性搜索中使用spark和Scala读取数据?

+0

你认为这个问题了吗?我有同样的问题,虽然我在ES v1.7.5,Spark v1.6.0,ES-Spark连接器v2.10-2.3.3和Scala 2.10.6上。 –

回答

0

请看选项“es.nodes.wan.only”。默认情况下,此键的值设置为“false”,当我将其设置为true时,该异常消失。以下是配置值的最新文档:https://www.elastic.co/guide/en/elasticsearch/hadoop/current/configuration.html

val conf = new org.apache.spark.SparkConf() 
.setMaster("local[*]") 
.setAppName("es-example") 
.set("es.nodes", "search-2meoihmu.us-est-1.es.amazonaws.com") 
.set("es.nodes.wan.only", "true") 

注意,DOC指定此值翻转到真像那些在AWS的环境,但试图指向一个VM与Elasticsearch运行时,此异常发生我。