在spark-submit中设置elasticsearch属性

时间:2014-08-11 08:02:07

标签: elasticsearch apache-spark

我正在尝试使用spark-submit启动使用弹性搜索输入的Spark作业,如http://www.elasticsearch.org/guide/en/elasticsearch/hadoop/current/spark.html

中所述

我在文件中设置属性,但在启动spark-submit时会发出以下警告:

~/spark-1.0.1-bin-hadoop1/bin/spark-submit --class Main --properties-file spark.conf SparkES.jar

Warning: Ignoring non-spark config property: es.resource=myresource
Warning: Ignoring non-spark config property: es.nodes=mynode
Warning: Ignoring non-spark config property: es.query=myquery
...
Exception in thread "main" org.elasticsearch.hadoop.rest.EsHadoopNoNodesLeftException: Connection error (check network and/or proxy settings)- all nodes failed

我的配置文件看起来像(正确值):

es.nodes      nodeip:port
es.resource   index/type
es.query      query

在代码中设置配置对象中的属性有效,但我需要避免这种解决方法。

有没有办法通过命令行设置这些属性?

2 个答案:

答案 0 :(得分:4)

我不知道你是否解决了你的问题(如果是,如何解决?),但我找到了这个解决方案:

import org.elasticsearch.spark.rdd.EsSpark

EsSpark.saveToEs(rdd, "spark/docs", Map("es.nodes" -> "10.0.5.151"))

再见

答案 1 :(得分:0)

当您将配置文件传递给spark-submit时,它只会加载以'spark'开头的配置。

所以,在我的配置中我只使用

spark.es.nodes <es-ip>

在代码本身我必须做

val conf = new SparkConf()
conf.set("es.nodes", conf.get("spark.es.nodes"))