使用es-hadoop插件,主要使用elasticsearch-spark-20_2.11-6.2.x.jar

官网:https://www.elastic.co/guide/en/elasticsearch/hadoop/current/reference.html

关于ES详细的配置参数 大家可以看下面的这个类:

org.elasticsearch.hadoop.cfg.ConfigurationOptions

sparkstreaming写入ES:
      
 
        SparkConf conf = new SparkConf();
conf.set("es.index.auto.create", "true");
conf.set("es.nodes", "10.8.18.16,10.8.18.45,10.8.18.76");
conf.set("es.port", "9200");
JavaStreamingContext ssc= null;
try {
ssc= new JavaStreamingContext(conf, new Duration(5000L));
JavaSparkContext jsc =ssc.sparkContext();
String json1 = "{\"reason\" : \"business\",\"airport\" : \"sfo\"}";
String json2 = "{\"participants\" : 5,\"airport\" : \"otp\"}"; JavaRDD<String> stringRDD = jsc.parallelize(ImmutableList.of(json1, json2));
Queue<JavaRDD<String>> microbatches = new LinkedList<JavaRDD<String>>();
microbatches.add(stringRDD);
JavaDStream<String> stringDStream = ssc.queueStream(microbatches); //接口1:es的配置通过SparkConf配置
//使用动态模板,用{}将动态生成的字段名括起来,注意是作用于index
//而不是type
//JavaEsSparkStreaming.saveJsonToEs(stringDStream, "spark-{airport}/doc"); Map<String,String> map = new HashMap<String,String>();
map.put("es.index.auto.create", "true");
map.put("es.nodes", "ip1,ip2,ip3");
map.put("es.resource.write", "spark-{airport}/doc");
map.put("es.port", "9200");
//接口2:es的配置通过HashMap配置,其中读取es是index的key为es.resource.read
//写入的key为es.resource.write
//JavaEsSparkStreaming.saveJsonToEs(stringDStream, map);
//接口3:与接口2类似,只是该接口支持直接填写index参数
JavaEsSparkStreaming.saveJsonToEs(stringDStream,"spark-{airport}/doc", map);
ssc.start();
ssc.awaitTermination();
} catch (Throwable e) {
// TODO 自动生成的 catch 块
ssc.close();
e.printStackTrace();
}
//使用动态模板,用{}将动态生成的字段名括起来,注意是作用于index

spark写入ES(动态模板)的更多相关文章

  1. 关闭ES动态创建mapping

    使用ES的默认配置会使我们在索引不存在于mapping中的字段时,会自动创建. 这无疑会给我们带来困扰. 在我们不想要某个字段被搜索的时候,我们可以在开始关闭动态创建mapping. 执行如下操作: ...

  2. elasticsearch 动态模板设置

    自定义动态映射 如果你想在运行时增加新的字段,你可能会启用动态映射.然而,有时候,动态映射 规则 可能不太智能.幸运的是,我们可以通过设置去自定义这些规则,以便更好的适用于你的数据. 日期检测 当 E ...

  3. elasticsearch 动态模板

    在elasticsearch中,如果你有一类相似的数据字段,想要统一设置其映射,就可以用到一项功能:动态模板映射(dynamic_templates). 每个模板都有一个名字用于描述这个模板的用途,一 ...

  4. Logstash动态模板映射收集Nginx的Json格式日志

    Logstash传输给ES的数据会自动映射为5索引,5备份,字段都为text的的索引.这样基本上无法进行数据分析.所以必须将Logstash的数据按照既定的格式存储在ES中,这时候就要使用到ES模板技 ...

  5. Spark读写ES

    本文主要介绍spark sql读写es.structured streaming写入es以及一些参数的配置 ES官方提供了对spark的支持,可以直接通过spark读写es,具体可以参考ES Spar ...

  6. MapReduce和Spark写入Hbase多表总结

    作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 大家都知道用mapreduce或者spark写入已知的hbase中的表时,直接在mapreduc ...

  7. vert.x学习(六),动态模板与静态文件的结合

    这篇学习在动态模板里面引入css,把动态模板与静态文件结合起来使用. 编写DynamicReference.java package com.javafm.vertx.helloworld; impo ...

  8. Python-将json文件写入ES数据库

    1.安装Elasticsearch数据库 PS:在此之前需首先安装Java SE环境 下载elasticsearch-6.5.2版本,进入/elasticsearch-6.5.2/bin目录,双击执行 ...

  9. 迷你MVVM框架 avalonjs 沉思录 第3节 动态模板

    模板的发明是编程史上的一大里程碑,让我们摆脱了烦锁且易出错的字符串拼接,维护性大大提高. 都在JSP,ASP时代,人们已经学会使用include等语句,将多个页面片断拼接成一个页面. 此外,为了将数据 ...

随机推荐

  1. 课时47.datalist标签(了解)

    1.datalist标签 作用:给输入框绑定待选项 2.datalist格式: <datalist> <option>待选项内容</option> </dat ...

  2. Spark集群无法停止的原因分析和解决

    今天想停止spark集群,发现执行stop-all.sh的时候spark的相关进程都无法停止.提示: no org.apache.spark.deploy.master.Master to stop ...

  3. Oracle以固定字符截取字符串

    CREATE OR REPLACE FUNCTION "F_SPLIT" (p_str IN CLOB, p_delimiter IN VARCHAR2) RETURN ty_st ...

  4. Linux性能检查命令总结[转]

    一些常用的网络.IO.内存监控指令,Linux性能检查命令总结

  5. ruby中的return方法及class实例方法的initialize方法

    return是函数的返回值 class Mtring def initialize(str) @name = str end def aa ary = @name.split(/:/) return ...

  6. Linux命令集锦

    梳理常用的Linux命令 day1--cd命令 cd命令:(注意以下的命令,cd后均有一个空格) 1.进入盘符: cd f: 2.进入当前目录命令: cd . 3.进入指定文件夹(在进入确定盘符之后, ...

  7. 闰年相关的问题v3.0——计算有多少闰年

    # include<stdio.h>int main(){ int a,b,i; int sum = 0; printf("Input your birth year:" ...

  8. 第五节 Go数据结构之队列

    一.什么是队列 数据结构里的队列就是模仿现实中的排队.如上图中狗狗排队上厕所,新来的狗狗排到队伍最后,最前面的狗狗撒完尿走开,后面的跟上.可以看出队列有两个特点: (1) 新来的都排在队尾: (2) ...

  9. Docker入门系列01

    前两篇写了 Docker 如何安装和相关的概念,当然概念的东西省略了很多,主要是自己水平有限,所以后期会可能增添.但以上内容都是用别人的建好的 镜像(Image) ,这怎么行,我们应该自己动手造轮子, ...

  10. struts2学习笔记三

    一.国际化概念(了解) 1.什么是国际化 软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的.符合来访者阅读习惯的页面或数据. 2.什么需要国际 ...