Spark在读写ES时,需要在SparkConf里配置ES的用户名、密码、host、port,因此当涉及到多个读或写时,就需要配置多个SparkConf。但SparkConf在运行中是不允许被更改的,此时应该怎么办呢?
1、读:利用options进行配置
val sqlContext = new SQLContext(sc)
val cfg = Map("es.index.auto.create" -> "true",
"es.nodes" -> "your_host",
"es.port" -> "your_port",
"es.net.http.auth.user" -> "your_user",
"es.net.http.auth.pass" -> "your_pass",
"es.nodes.discovery" -> "true",
"es.nodes.wan.only" -> "false",
"es.nodes.resolve.hostname" -> "false",
"es.batch.size.entries" -> "1000",
"es.batch.write.refresh" -> "false")
val df = sqlContext.read.options(cfg).format("es").load("test_es/product")
2、写:利用sveToEs方法的重载方法进行配置
rdd.saveToEs(s"${esConfig.index_name}/${esConfig.type_name}", your-cfg-Map)
以上两种方法的配置都需要写成Map形式即可