上篇文章简单介绍了ES-Hadoop插件的功能和使用场景,本篇就来看下如何使用ES-Hadoop里面的ES-Spark插件,来完成使用spark想es里面大批量插入数据。
这里说明下ES-Hadoop是一个fat的maven依赖,也就是引入这个包会导入许多额外的依赖,不建议这么搞,除非是测试为了方便用的,实际情况是ES也单独提供了每个不同框架的mini包,比如说只使用spark那么就可以单独引入es-spark的包,而不需要使用fat包因为它会附加引入其他的包依赖,如果使用hive那就单独引入es-hive的包即可。这里面唯一需要注意的就是注意版本问题,不同的框架的版本和es-hadoop的组件都有对应的版本,使用不当会报异常,具体的情况,请参考官网文档:
https://www.elastic.co/guide/en/elasticsearch/hadoop/current/install.html
下面看下如何使用es-spark读写es的数据:
spark版本:2.1.0
scala版本:2.11.8
es版本:2.3.4
索引要引入下面的依赖pom才行
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch-spark-20_2.11</artifactId>
<version>5.3.2</version>
</dependency>
这里为了快速体验,所以直接使用spark的local模式测试,如果要放到正式环境运行,切记把local模式的代码去掉。
先看下向es里面插入数据的代码,非常简单:
val conf=new SparkConf()
conf.setMaster("local[1]")//指定local模式
conf.setAppName("spark to es")//设置任务名
conf.set("es.index.auto.create","true")//开启自动创建索引
conf.set("es.nodes","192.168.201.5,192.168.201.6")//es的节点,多个用逗号分隔
conf.set("es.port","9200")//端口号
val sc=new SparkContext(conf)
val data1 = Map("id" -> 1, "name" -> "tom", "age" -> 19)//第一条数据
val data2 = Map("id" -> 2, "name" -> "john","age"->25)//第二条数据
sc.makeRDD(Seq(data1, data2)).saveToEs("spark/docs")//添加到索引里面
println("存储成功!")
sc.stop()
然后我们看下如何读取es里面的数据:
val conf=new SparkConf()
conf.setMaster("local[1]")//指定local模式
conf.setAppName("spark to es")//任务名
conf.set("es.nodes","192.168.201.5,192.168.201.6")//es节点多个逗号分隔
conf.set("es.port","9200")
val sc=new SparkContext(conf)
val ds=sc.esRDD("stu2017-05-03/stu")//读取数据到spark的rdd里面
log.info("stu2017-05-03数据总量:"+ds.count())//统计数量
sc.stop()
从上面的代码量我们可以看到非常少,这是由于es-spark底层已经帮我们封装好了相关的代码,所以用起来非常简单,围绕的核心还是rdd,无论是写入es,还是从es读取数据都是通过spark的rdd做中转的,我们只要把我们的目标数据给转成RDD或者DataFrame就能非常方便的与es对接了。
上面的代码使用spark的core来完成的,此外我门还可以使用spark sql或者spark streaming来与es对接,这个以后用到的时候再总结分享,最后使用spark操作es的时候我门还可以有非常多的配置参数设置,本例子中只使用了部分的参数,关于详细的配置参数
大家可以看下面的这个类:
org.elasticsearch.hadoop.cfg.ConfigurationOptions
官网文档:
https://www.elastic.co/guide/en/elasticsearch/hadoop/current/reference.html
有什么问题可以扫码关注微信公众号:我是攻城师(woshigcs),在后台留言咨询。
技术债不能欠,健康债更不能欠, 求道之路,与君同行。
分享到:
相关推荐
包含 elasticsearch-hadoop-6.6.1.jar elasticsearch-hadoop-hive-6.6.1.jar elasticsearch-spark-20_2.11-6.6.1.jar elasticsearch-storm-6.6.1.jar 等
elasticsearch 结合spark和hadoop包地方 希望广大用户积极下载使用目,少量积分
elasticsearch-hadoop
Elasticsearch-Hadoop serves as a perfect tool to bridge the worlds of Elasticsearch and Hadoop ecosystem to get best out of both the worlds. Powered with Kibana, this stack makes it a cakewalk to get...
拥有强大的搜索和统计功能,Elasticsearch已经越来越流行。但是如果用它来做复杂的数据分析工具,它能打败hadoop或spark吗?
MongoDB-ElasticSearch-ETL 概要 读取MongoDB并迁移到ElasticSearch的通用模板 要求 mongodb-driver-3.0.2.jar bson-3.0.2.jar mongodb-driver-core-3.0.2.jar mongo-hadoop-core-1.4.0.jar elasticsearch-spark...
Hadoop Spark R SparkR 大数据集群 安装文档。全是原生组件,部署在Centos系统上
1、内容概要:Hadoop+Spark+Hive+HBase+Oozie+Kafka+Flume+Flink+Elasticsearch+Redash等大数据集群及组件搭建指南(详细搭建步骤+实践过程问题总结)。 2、适合人群:大数据运维、大数据相关技术及组件初学者。 3、...
Hadoop/Spark/Storm/ES/MachineLearning etc. This is My Learning Notes/Code/Demo. Don't fork, Just star ! 几个概念 BI: 包括ETL(数据的抽取、转换、加载),数据仓库(Data Warehouse),OLAP(联机分析处理)...
Spark结合HDFS进行数据预处理。 TitanDB配置与卡桑德拉作为存储后端和ElasticSearch作为转位后端作为我们的图形数据库。 Spark(TitanDB 内部)与 HDFS 交互负责 TitanDB 中数据的批量摄取。 MapReduce利用在图...
这里以将Apache的日志写入到ElasticSearch为例,来演示一下如何使用Python将Spark数据导入到ES中。...pyspark –jars elasticsearch-hadoop-6.4.1.jar 如果你想pyspark使用Python3,请设置环境变量: expor
您将学习如何使用Apache Spark设计实时流传输管道以及如何使用Elasticsearch构建高效的企业搜索解决方案。 您还将了解如何使用Apache Superset之类的工具可视化数据。 通过该学习路径,您将精通使用Apache Ambari来...
hadoop,zookeeper,hbase,hive,spark,kafka,flink,clickhouse,数据仓库,等等
hadoop大数据生态,大数据分布式引擎数据分析,思维导图,知识点总结,快速掌握,包括hadoop spark hive elasticsearch kafka
包含爬虫,Scala代码,Spark,Hadoop,ElasticSearch,logstash,Flume,echarts,log4j emotional_analysis_spider 爬虫模块 emotional_analysis_web 数据处理模块(Scala代码) emotional_analysis_...
Elastic曾勇-Elasticsearch & Bigdata Databricks范文臣-Dataset in Spark 聚效广告刘忆智-Beyond MLLibScale up Advanced Machine Learning on Spark 王栋-利用ELK监控Hadoop集群负载性能 梁堰波-Build Generalized...
包含爬虫,Scala代码,Spark,Hadoop,ElasticSearch,logstash,Flume,echarts,log4j emotional_analysis_spider 爬虫模块 emotional_analysis_web 数据处理模块(Scala代码) emotional_analysis_recommend 推荐模块...
s这门技术有点特殊,跟比如其他的像纯java的课程,比如分布式课程,或者大数据类的课程,比如hadoop,spark,storm等。不太一样 2、es非常重要的一个api,是它的restful api,你自己思考一下,掌握这个es的restful ...
课程内容通过ElasticSearch集群的构建,各种相关插件的安装,Netty服务器构建,集群健康状况,各个节点状态,索引状态查看,结合es的备份和恢复,以及如何与hadoop,spark等整合,非常强悍的高级课程。 视频大小:...
疑犯追踪 13_项目:民航 14_azkaban 15_项目:公安局 16_SpringMVC 17_额外项目案例拓展 18_MyBatis 19_Maven 20_Scala 21_Spark 23_面试 23_Redis 24_ElasticSearch 25_MongoDB 26_电影推荐系统 27_滴滴系统 28_...