`
qindongliang1922
  • 浏览: 2189288 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117683
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:126082
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:60037
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71411
社区版块
存档分类
最新评论

使用ES-Hadoop插件结合spark向es插入数据

阅读更多




上篇文章简单介绍了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),在后台留言咨询。
技术债不能欠,健康债更不能欠, 求道之路,与君同行。


0
0
分享到:
评论

相关推荐

    elasticsearch-hadoop-8.8.0

    - **Spark集成**:Elasticsearch-Hadoop也支持Apache Spark,允许Spark作业直接操作Elasticsearch集群,提升大数据处理效率。 - **Hive和Pig支持**:对于使用Hive和Pig进行大数据处理的用户,Elasticsearch-Hadoop...

    elasticsearch-hadoop-5.2.1

    1. **数据导入导出**:Elasticsearch-Hadoop提供了`elasticsearch-hadoop-mr`(MapReduce)和`elasticsearch-spark`(Spark)库,使得用户能够将Hadoop MapReduce或Spark作业的结果直接写入Elasticsearch,同时也...

    elasticsearch 与hadoop 相关的jar

    包含 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-hadoop-6.8.23.zip

    8. **配置和优化**:使用Elasticsearch-Hadoop时,需要注意配置Hadoop和Elasticsearch的相关参数,如连接池大小、请求超时时间、数据分片策略等,以达到最佳性能。 总之,Elasticsearch-Hadoop为大数据开发者提供了...

    elasticsearch-hadoop-8.5.3.zip

    总之,Elasticsearch-Hadoop 8.5.3是大数据生态系统中不可或缺的一部分,它为Hadoop与Elasticsearch之间的数据交互提供了桥梁,帮助用户更好地管理和分析海量数据,提升大数据分析的效率和价值。

    elasticsearch-hadoop-5.5.0.jar

    elasticsearch 结合spark和hadoop包地方 希望广大用户积极下载使用目,少量积分

    elasticsearch与hadoop比较

    Elasticsearch与Hadoop是当今大数据处理领域的两大重要技术,它们在数据存储、处理和检索方面各有所长。Elasticsearch是一个基于Lucene的分布式搜索服务器,其设计目的是提供一个分布式的、可扩展的全文搜索引擎,...

    Elasticsearch集成Hadoop最佳实践

    - **Hadoop 到 Elasticsearch 数据流**: 在 Hadoop 端,使用例如 Logstash 或者 Elasticsearch 的 Hadoop 插件(如 Elasticsearch-Hadoop)将 MapReduce 或 Spark 处理后的结果直接写入 Elasticsearch。这通常涉及...

    项目实战——Spark将Hive表的数据写入ElasticSearch(Java版本)

    在本项目实战中,我们将探讨如何使用Java编程语言,结合Spark和Hive,将Hive中的数据高效地导入到ElasticSearch(ES)中,并利用ES的别名机制实现数据更新的平滑过渡。以下是对这个流程的详细解析: 1. **Hive数据...

    MongoDB-ElasticSearch-Spark-ETL:读取MongoDB并迁移到ElasticSearch的通用模板

    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...

    Integration betweena Elasticsearch and Spark

    前者利用了Elasticsearch自身的查询功能,后者则通过Elasticsearch-hadoop连接器实现,这允许Spark可以利用Elasticsearch的数据进行聚合操作,而这一点在Elasticsearch-hadoop的某些版本中可能不受支持。 在优化...

    Hadoop+Spark+Hive+HBase+Oozie+Kafka+Flume+Flink+ES+Redash等详细安装部署

    在大数据领域,构建一个完整的生态系统是至关重要的,其中包括多个组件,如Hadoop、Spark、Hive、HBase、Oozie、Kafka、Flume、Flink、Elasticsearch和Redash。这些组件协同工作,提供了数据存储、处理、调度、流...

    elasticsearch-5.5.0.tar.gz

    这个版本的压缩包 "elasticsearch-5.5.0.tar.gz" 包含了运行 Elasticsearch 5.5.0 所需的所有文件和组件。 首先,Elasticsearch 的核心功能是全文搜索,这意味着它能够理解自然语言并进行智能匹配,这在处理大量...

    Hadoop+Spark+R+SparkR集群环境搭建

    Hadoop Spark R SparkR 大数据集群 安装文档。全是原生组件,部署在Centos系统上

    ElasticSearch----Elasticsearch服务器开发2.0.zip

    此外,Elasticsearch还可以与Hadoop、Spark等大数据框架结合,实现深度分析。 总之,“Elasticsearch服务器开发2.0”资料将带领读者全面掌握Elasticsearch的部署、配置、索引、搜索、聚合以及监控等核心技能,为在...

    藏经阁-Spark Cluster with Elasticsearch Inside.pdf

    在使用 ES-Hadoop 进行开发时,Elasticsearch 需要在 Spark 集群外部运行,这样会带来很多不便。在开发过程中,Elasticsearch 的实例需要频繁地启动和停止,且团队之间的依赖关系也很复杂。因此,我们需要一种方法来...

    kettle使用es、大数据插件jar包.rar

    在这个"Kettle使用es、大数据插件jar包.rar"压缩包中,包含的是Kettle针对Elasticsearch(ES)以及大数据处理的相关插件,这些插件使得Kettle能够更好地与大数据环境集成,进行高效的数据操作和分析。 Elastic...

    ES与大数据平台集成资料

    ES与Spark的集成主要通过`elasticsearch-hadoop`库实现,该库允许Spark作业直接读写Elasticsearch中的数据。以下是一些关键集成点: 1. **数据导入**:Spark可以通过`es.read.format("org.elasticsearch.spark.sql...

Global site tag (gtag.js) - Google Analytics