我正在尝试使用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
在代码中设置配置对象中的属性有效,但我需要避免这种解决方法。
有没有办法通过命令行设置这些属性?
答案 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"))