Elasticsearch-Spark 体验

来源:互联网 发布:加入淘宝联盟怎么赚钱 编辑:程序博客网 时间:2024/05/22 02:08

Elasticsearch-Spark 体验

Elastcisearch和Spark都是我非常喜欢的开源产品,如果能把两者整合起来进行应用当然是最好了。所以elastic在官网上发布了Elasticsearch for Apache Hadoop 2.1.0 (后面简写成ES-AH)版本后,我也很快尝试了下。虽然名字是for Hadoop,但是里面有一个模块是for spark的。

地址在这里:

https://www.elastic.co/guide/en/elasticsearch/hadoop/current/spark.html

关于Hadoop的内容都是可以不看的,Confinguration这个章节还是要看下

https://www.elastic.co/guide/en/elasticsearch/hadoop/current/configuration.html

主要的功能包括

  1. Spark通过RDD将数据写入到Elasticsearch
  2. Spark sql通过Dataframe或者SchemaRDD将数据写入到Elasticsearch
  3. Spark从Elasticsearch读取数据,构造Dataframe
  4. 将Elasticsearch作为数据库,执行Sql脚本,包括执行创建临时表的动作
  5. 还可以通过Map/Reduce层来访问数据,但是并不推荐

代码贴个最简单的,本地测试通过了,官网的文档写的很清楚,没必要饶舌了。

import org.apache.spark.SparkContextimport org.apache.spark.SparkConfimport org.elasticsearch.spark._import org.elasticsearch.spark.rdd.EsSparkobject EsSparkTest{  def main(args: Array[String]) {      val conf = new SparkConf().setAppName("Test").setMaster("local")    conf.set("es.index.auto.create", "true")    val sc = new SparkContext(conf)    val numbers = Map("one"->1,"two"->2,"three"->3)    val airports = Map("arrival" -> "Otopeni", "SFO" -> "San Fran")    // implicit    sc.makeRDD(Seq(numbers, airports)).saveToEs("spark/docs")  }

最开始遇到的一个问题就是不知道在那里设置Elasticsearch的访问,看看Confinguration就清楚了,有es.nodes和es.port,如果在本地测试,就不用设置了。
欢迎大家讨论!

0 1
原创粉丝点击