精华内容
下载资源
问答
  • Spark整合Elasticsearch-从ES读取数据由于ES集群在拉取数据时可以提供过滤功能,因此在采用ES集群作为spark运算时的数据来源时,根据过滤条件在拉取的源头就可以过滤了(ES提供过滤),就不必像从hdfs那样必须全部加载...

    Spark整合Elasticsearch-从ES读取数据

    由于ES集群在拉取数据时可以提供过滤功能,因此在采用ES集群作为spark运算时的数据来源时,

    根据过滤条件在拉取的源头就可以过滤了(ES提供过滤),就不必像从hdfs那样必须全部加载进spark的内存根据filter算子过滤,费时费力。

    代码:

    import org.apache.spark.{SparkConf, SparkContext}

    import org.elasticsearch.spark._

    object Spark2Elasticsearch {

    def main(args: Array[String]): Unit = {

    val conf =new SparkConf().setAppName("Spark2ES").setMaster("local[2]")

    conf.set("es.nodes","hadoop1,hadoop2,hadoop3")

    conf.set("es.port","9200")

    conf.set("es.index.auto.create","true")

    val sc =new SparkContext(conf)

    val query:String =s"""{

    "query" : {

    "match_all" : {}

    },

    "filter" : {

    "term" : {

    "price" : 50.55

    }

    }

    }"""

    val rdd = sc.esRDD("store", query)

    println(rdd.collect().toBuffer)

    }

    }

    20180720190910_171.jpg

    运行结果:

    20180720190910_907.jpg

    采坑点:

    那个sc.esRDD方法其实是ES提供的jar包里的一个隐试转换,在import org.elasticsearch.spark._这个包下,

    配置mavin依赖时注意spark的配套版本,本文1.6的spark依赖如下:

    20180720190911_911.jpg

    展开全文
  • spark2.0访问ES5.1中的数据

    千次阅读 2017-09-26 17:11:43
    需求是从ES中读取数据进行... 后来发现一个问题,单纯的java代码无法实现es数据的join操作,即使能实现也是麻烦到姥姥家,所以,贡献一下我的方案  先上依赖: 测试依赖  junit  junit  4.11  test  

       需求是从ES中读取数据进行分析,本来想用java想用java纯代码写的,但是太麻烦,所以就用了sparksql来分析,实现需求

     后来发现一个问题,单纯的java代码无法实现es数据的join操作,即使能实现也是麻烦到姥姥家,所以,贡献一下我的方案

       先上依赖:

    测试依赖

    <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.11</version>
          <scope>test</scope>
        </dependency>

    ES的依赖,5.X的都差不多

        <dependency>
        <groupId>org.elasticsearch.client</groupId>
        <artifactId>transport</artifactId>
        <version>5.2.2</version>
    </dependency>
    <dependency>

    log的依赖
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.7</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.7</version>
    </dependency>
    <dependency>

    json的依赖
       <groupId>org.json</groupId>
       <artifactId>json</artifactId>
       <version>20160212</version>
    </dependency>
    分词依赖
    <dependency>
       <groupId>analyzer</groupId>
       <artifactId>IKAnalyzer</artifactId>
       <version>5</version>
    </dependency>
    <dependency>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
     <version>5.1.6</version>
    </dependency>
    <dependency>

    sparksql的依赖,版本是scala2.11 spark2.02
     <groupId>org.apache.spark</groupId>
     <artifactId>spark-sql_2.11</artifactId>
     <version>2.0.2</version>
    </dependency>
    spark和ES集成的依赖
    <dependency>
     <groupId>org.elasticsearch</groupId>
     <artifactId>elasticsearch-spark-20_2.11</artifactId>
     <version>5.1.1</version>
        </dependency>

    下面就是代码部分


    public static void main(String[] args) {

     //设置日志的等级,不然产生的太多,看的很烦
      
      Logger.getLogger("org.apache.spark").setLevel(Level.WARN);

    //spark2.0的新api。不懂的童鞋请移架官网
           SparkSession sparkorCreate = SparkSession.builder()    
           .appName("EsSparkSql")
           .master("local")

    //这个不设置会报错,请记住,踩的坑之一
           .config("spark.sql.warehouse.dir", "file:///D:/tmp/spark-warehouse")
           .getOrCreate();
           
           registerESTable(sparkorCreate,"logdt","logdt9");
    }

    //从logdt的index,first的type中读取数据

     Dataset<Row> OrderDF = sqlContext.read().format("org.elasticsearch.spark.sql")
                                        .options(esOptions)
                                        .load("logdt/first");
            //注册成临时表,准备接下来的sql
            OrderDF.registerTempTable("logdt");
            logdt.show();
            //OrderDF.show();
            //这是一个sql
            Dataset<Row> sql1 = sqlContext.sql("select timestamp timestamp,rectime,link,transcode,serno,globalSeqNo from logdt where link ='C' and transcode = 'Begin' and transcode is not null and globalSeqNo is not null");


            sql1.registerTempTable("logdt1");
            
            sql1.show();
            //另外一个sql的条件
            Dataset<Row> sql2 = sqlContext.sql("select timestamp timestamp,link,transcode,serno,globalSeqNo from logdt where link ='E' and transcode is not null and serno is not null");
            
            sql2.registerTempTable("logdt2");
            
            sql2.show();
            

    //实现join操作
            String joinsql="select logdt1.timestamp timestampc,logdt1.link liknc,logdt1.transcode transcodec,"
            + "logdt1.serno sernoc,logdt1.globalSeqNo globalSeqNoc,"
            + "logdt2.timestamp timestampe,logdt2.link likne,logdt2.transcode transcodee,"
            + "logdt2.serno sernoe,logdt2.globalSeqNo globalSeqNoe  from logdt1 inner join logdt2 on logdt1.globalSeqNo=logdt2.serno";
            
            
            Dataset<Row> sql3 = sqlContext.sql(joinsql);
            
            Properties properties = new Properties();
            properties.setProperty("user","root");
            properties.setProperty("password","123456");

    //分析的结果保存到数据库
            sql3.write().mode(SaveMode.Append).jdbc("jdbc:mysql://localhost:3306/esdata",tableName,properties);
            System.out.println("运行成功");


    ES中的数据进行join,最后结果写入mysql的操作完成了,希望有用!

    展开全文
  • [Java教程]JavaScript数据属性与访问器属性0 2015-09-29 17:00:03ES5中对象的属性可以分为‘数据属性’和‘访问器属性’两种。数据属性一般用于存储数据数值,访问器属性对应的是set/get操作,不能直接存储数据值。...

    [Java教程]JavaScript数据属性与访问器属性

    0 2015-09-29 17:00:03

    ES5中对象的属性可以分为‘数据属性’和‘访问器属性’两种。

    数据属性一般用于存储数据数值,访问器属性对应的是set/get操作,不能直接存储数据值。

    数据属性特性:value、writable、enumerable、configurable。

    解释:configurable:true/false,是否可以通过delete删除属性,能否修改属性的特性,能否把属性修改为访问器属性,默认false;

    enumerable:true/false,是否可以通过for in循环返回,默认false;

    writable:true/false,是否可以修改属性的值,默认false;

    value:undefined,设置属性的值,默认undefined。

    访问器属性特性:set、get、enumerable、configurable。

    解释:configurable:true/false,是否可以通过delete删除属性,能否修改属性的特性,能否把属性修改为访问器属性,默认false;

    enumerable:true/false,是否可以通过for in循环返回,默认false;

    set:function,读取属性值时调用的函数;

    get:function,修改属性值时调用的函数。

    将属性添加到对象或修改现有属性的特性使用Object.defineProperty() 或 Object.defineproperties()方法;

    Object.defineProperty(object, propertyname, descriptor):

    参数解释:object:需要添加或修改属性的对象;

    propertyname:属性的名称,字符串格式;

    descriptor:属性的描述,设置数据属性或访问器属性的特性。

    实例分析:

    数据属性:

    var emp = {

    name:'tom'

    };

    Object.defineProperty(emp,'name',{

    writable:false

    });

    emp.name = 'jery';

    console.log(emp.name);//输出tom,因为已经设置了writable为false

    Object.defineProperty(emp,'age',{

    configurable:false,

    writable:true,

    value:22

    });

    console.log(emp.age);//输出22,因为设置了value为22

    emp.age = 25;

    console.log(emp.age);//输出25,设置了writable为true

    delete emp.age;

    console.log(emp.age);//输出25,设置了configurable为false,此属性删除不了

    访问器属性:

    var emp ={

    _name:'tom',

    _age:20

    };

    Object.defineProperty(emp,'name',{

    get:function(){

    return this._name;

    }

    });

    console.log(emp.name);//输出tom,由get方法返回_name的值

    emp.name = 'jery';

    console.log(emp.name);//输出tom,没有set方法,修改不了_name的值

    Object.defineProperty(emp,'age',{

    configurable:true,

    get:function(){

    return this._age;

    }

    set:function(age){

    this._age = age;

    }

    });

    emp.age = 25;

    console.log(emp.age)//输出25,emp.age=25是使用set方法将25赋值给_age,emp.age是使用get方法将_age的读取出来

    delete emp.age;

    console.log(emp.age);//输出undefined,configurable为true,可以使用delete方法将emp.age属性删除

    备注:访问器属性可以起到很好的保护作用,当只有get方法时,就实现只读不能写;反之,只有set时,便是只能写入而不能读取

    本文网址:http://www.shaoqun.com/a/145295.html

    *特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:admin@shaoqun.com。

    JavaScript

    0

    展开全文
  • ES5中对象的属性可以分为‘数据属性'和‘访问器属性'两种。数据属性一般用于存储数据数值,访问器属性对应的是set/get操作,不能直接存储数据值。数据属性特性:value、writable、enumerable、configurable。解释:...

    ES5中对象的属性可以分为‘数据属性'和‘访问器属性'两种。

    数据属性一般用于存储数据数值,访问器属性对应的是set/get操作,不能直接存储数据值。

    数据属性特性:value、writable、enumerable、configurable。

    解释:configurable:true/false,是否可以通过delete删除属性,能否修改属性的特性,能否把属性修改为访问器属性,默认false;

    enumerable:true/false,是否可以通过for in循环返回,默认false;

    writable:true/false,是否可以修改属性的值,默认false;

    value:undefined,设置属性的值,默认undefined。

    访问器属性特性:set、get、enumerable、configurable。

    解释:configurable:true/false,是否可以通过delete删除属性,能否修改属性的特性,能否把属性修改为访问器属性,默认false;

    enumerable:true/false,是否可以通过for in循环返回,默认false;

    set:function,读取属性值时调用的函数;

    get:function,修改属性值时调用的函数。

    将属性添加到对象或修改现有属性的特性使用Object.defineProperty() 或 Object.defineproperties()方法;

    Object.defineProperty(object, propertyname, descriptor):

    参数解释:object:需要添加或修改属性的对象;

    propertyname:属性的名称,字符串格式;

    descriptor:属性的描述,设置数据属性或访问器属性的特性。

    实例分析:

    数据属性:

    var emp = {

    name:'tom'

    };

    Object.defineProperty(emp,'name',{

    writable:false

    });

    emp.name = 'jery';

    console.log(emp.name);//输出tom,因为已经设置了writable为false

    Object.defineProperty(emp,'age',{

    configurable:false,

    writable:true,

    value:22

    });

    console.log(emp.age);//输出22,因为设置了value为22

    emp.age = 25;

    console.log(emp.age);//输出25,设置了writable为true

    delete emp.age;

    console.log(emp.age);//输出25,设置了configurable为false,此属性删除不了

    访问器属性:

    var emp ={

    _name:'tom',

    _age:20

    };

    Object.defineProperty(emp,'name',{

    get:function(){

    return this._name;

    }

    });

    console.log(emp.name);//输出tom,由get方法返回_name的值

    emp.name = 'jery';

    console.log(emp.name);//输出tom,没有set方法,修改不了_name的值

    Object.defineProperty(emp,'age',{

    configurable:true,

    get:function(){

    return this._age;

    }

    set:function(age){

    this._age = age;

    }

    });

    emp.age = 25;

    console.log(emp.age)//输出25,emp.age=25是使用set方法将25赋值给_age,emp.age是使用get方法将_age的读取出来

    delete emp.age;

    console.log(emp.age);//输出undefined,configurable为true,可以使用delete方法将emp.age属性删除

    备注:访问器属性可以起到很好的保护作用,当只有get方法时,就实现只读不能写;反之,只有set时,便是只能写入而不能读取

    以上就是小编为大家带来的浅谈Javascript数据属性与访问器属性全部内容了,希望大家多多支持脚本之家~

    展开全文
  • ES未授权访问

    2021-01-08 14:29:32
    ElasticSearch是一款Java编写的企业级搜索服务,未加固情况下启动服务存在未授权访问风险,可被非法查询或操作数据,需立即修复加固。 检查提示 主目录:/usr/share/elasticsearch 加固建议 限制http端口的IP访问,...
  • es入门学习8-java-Spring Data ElasticSearch 使用 一、Spring Data ElasticSearch 简介 基于 spring data API 简化 elasticSearch操作,将原始操作elasticSearch的客户端API 进行封装 。 为Elasticsearch项目提供...
  • Java企业搜索平台:起点R3(Rivulet ES) ... 起点R3企业级搜索引擎是起点软件提供的企业搜索解决方案,支持企业环境下的数据访问控制(ACL),能够通过定义用户数据访问权限来控制检索数据的安全。 R3是一个强大的,...
  • es中,text类型的字段使用一种叫做fielddata的查询时内存数据结构。当字段被排序,聚合或者通过脚本访问时这种数据结构会被创建。它是通过从磁盘读取每个段的整个反向索引来构建的,然后存存储在java的堆内存中。 ...
  • mysql, es, mongodb 三个...Spring Boot - 多个数据源Service层封装类关系图封装的一些配置application.ymlpom.xml封装后使用MySQL 动态数据访问Mongo 动态数据访问ElasticSearch 动态数据访问(单个index+type)Elas...
  • SpringBoot 入门、自定义配置、测试、Actuator、SpringBoot起步依赖、属性配置 ...起源、基础、MVC框架、视图技术、数据库访问、JPA、配置、REST、MongoDB、Redis、Cache、ES、SpringSession、ZooKeeper
  • Elasticsearch是一个开源...Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。 当ElasticSea...
  • >>号外:关注“Java精选”公众号,菜单栏->聚合->干货分享,回复关键词领取视频资料、开源项目。1. MySQL查询慢是什么体验?谢邀,利益相关。大多数互联网...
  • 需求分析 1.实现大数据量(大于千万)环境下,具有【多字段】、【快速】、【支持模糊匹配和拆词】的**检索功能的小程序。...ES官方已不建议通过TransportClient来访问Elasticsearch,使用Transpor...
  • Java企业搜索平台:起点R3(Rivulet ES) V5.0 使用简介

    千次阅读 热门讨论 2011-03-27 14:36:00
    关于起点R3企业搜索的相关介绍如下: 起点R3企业级搜索引擎是起点软件提供的企业搜索解决方案,支持企业环境下的数据访问控制(ACL),能够通过定义用户数据访问权限来控制检索数据的安全。 R3是一个强大的,高性能...
  • 欢迎访问我的GitHubhttps://github.com/zq2599/blog_demos内容:原创文章分类汇总及配套源码,涉及Java、Docker、K8S、Devops等问题突现在执行docker exec命令时,报错信息为:rpc error: code = 2 desc = ...
  • ES--003--ES基本概念

    2019-09-23 23:00:57
    ES是什么 ES是一个开源的高扩展的分布式全文搜索引擎。使用Java开发并使用Luence作为其核心来实现所有索引...直接通过http请求就可以访问es Luence存储对象时是使用Document对象进行新增的,ES直接通过JSON就可以新...
  • ES(一):ES基本概念和原理简单介绍

    千次阅读 2019-11-24 18:56:02
    ES是基于Lucene的搜索服务器,它提供了一个分布式多用户能力的全问搜索引擎,且ES支持RestFulweb风格的url访问ES是基于Java开发的开源搜索引擎,设计用于云计算,能够达到实时搜索,稳定、可靠、快速。此外,ES还...
  • ES Fielddata

    2020-05-22 11:11:54
    ES中,text类型的字段使用一种叫做fielddata的查询时内存数据结构。当字段被排序,聚合或者通过脚本访问时这种数据结构会被创建。它是通过从磁盘读取每个段的整个反向索引来构建的,然后存存储在java的堆内存中。 ...
  • ES 即 Elasticsearch,是基于 Apache ...ES 的可靠性高,搜索性能好,易于分布式扩展,它提供了 HTTP RestFull 接口方便访问和管理数据ES 与 Kibana、LogStash 、filebeat 等软件构成 ELK 技术栈,提供了更加丰...
  • es fielddata理解

    2019-07-29 14:31:21
    es中,text类型的字段使用一种叫做fielddata的查询时内存数据结构。当字段被排序,聚合或者通过脚本访问时这种数据结构会被创建。它是通过从磁盘读取每个段的整个反向索引来构建的,然后存存储在java的堆内存中。 ...
  • elasticsearch提供river这个模块来读取数据源中的数据es中,es官方有提供couchDB的同步插件,因为项目用到的是mongodb,所以在找mongodb方面的同步插件,在git上找到了elasticsearch-river-mongodb。  这个插件...
  • ES数据量很大的情况下(数十亿级别)如何提高查询效率啊? ES 生产集群的部署架构是什么?每个索引的数据量大概有多少?每个索引大概有多少个分片? 缓存 在项目中缓存是如何使用的?缓存如果使用不当会造成...
  • ElasticSearch集群以及简单的JavaAPI操作ES集群配置ES集群的简介以及重要的配置项ES重要配置项的多种配置方式ES集群(3台)简单配置端口9200确实开了的情况下,解决无法访问外网的问题。ES简单的JavaAPI操作 ES集群...
  • 前言: es java客户端有 原生ESTransport Client方式(相当于写jdbc代码,麻烦,不采用)、spring data es(spring对Es数据访问,类似于spring data jpa对db访问,采用!)两种方式。 springboot项目整合es: 1、...
  • es中,text类型的字段使用一种叫做fielddata的查询时内存数据结构。当字段被排序,聚合或者通过脚本访问时这种数据结构会被创建。它是通过从磁盘读取每个段的整个反向索引来构建的,然后存存储在java的堆内存中。...

空空如也

空空如也

1 2 3 4 5 6
收藏数 106
精华内容 42
关键字:

java访问es数据

java 订阅