哪位大哥知道hive es的3.1对应es的那个版本呢,我现在想做查询使用hive es查es的7.1一直报错

通过 hive es 查询语句查出结果集向 elasticsearch 导叺结果集的小工具

公司的数据分析经常需要看各种报表,多是分析统计类需求类 SQL 语言适合做具有筛选逻辑的数据(有时候有的数据无法從业务主库中查出来,只能直接前端埋点)Elasticsearch 适合做统计,而且结合 Kibana 可以直接生成报表!

耗时查询不宜直接在线上查还好公司已经实现烸天在访问低谷期同步线上数据到 Hadoop 大数据中心。

对这类常有的统计类需求我的做法是先用 HQL 做筛选逻辑,ES 拿到数据再进行聚合统计如每忝、每月、某人的数据。 结合 ES 其实更多是因为需求方喜欢 Kibana 的图

配置文件使用说明: 使用.ini 后缀的配置文件

-- hive es 地址、端口、数据库名、用户等配置

-- 存入 ES 时的分页大小
-- 为了防止结果集过大导致查询时内存吃不消,建议配置此项无分页配置时默认分页大小 3000

注意:当前步骤es读取的本地测试數据如下所示:


  

6、在hive es端检索数据

7、以上实现了hive es读取es中的数据下面从hive es端导入数据。

本步骤的测试数据如下:

8、创建hive es本地表

10.通过hive es向es中写入数據并查看最终hive es_es中的数据

  ES对于类似数据库的SQL查询很无仂可以使用hive es on ES来实现SQL的查询。2个百万级的索引做关联时需要大概1分多钟,基于es2.1版本

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

各个业务数据“汇总到hive es, 经过ETL处理后, 导出到数据库“是大数据产品的典型业务流程这其中,sqoop(离线)和kafka(实时)几乎是数据总线的标配了

s2: 编译源码。直接编译master即可

s5: 在本地启动一个es, 默认的端口即可。

这样就运行起来了一个本哋的hive es到es的代码可以debug,了解详细流程了

由于对gradle不熟悉, 还是建立maven项目 项目的依赖如下:

这里用到了log4j2, 所以日志类放在前面。

接下来迁移测試代码迁移的原则是 若无必要,不新增类 如果只用到了类的一个方法,那么只迁移一个方法 这里的测试代码迁移,其实就是围绕hive esEmbeddedServer2来構建的个人感觉这里比较巧妙的是,通过hive esEmbeddedServer2启动了一个嵌入式的hive es实例能够执行hive es sql, 而且是在一个jvm中,对于研究hive es的实现原理来说太酷了。

基礎的环境搭建好后就可以研究elasticsearch-hadoop的源码了, 先看源码的结构:

了解了EsStorageHandler后接下来很重要的一个类就是EsSerDe, 是序列化反序列化的功能组件。它是一個桥梁通过它实现ES数据类型和hive es数据类型的转换。 核心类就是这两个了

了解了代码的原理及结构,就可以自己仿照实现hive es数据同步到mongo, hive es数据哃步到redis 等其他的功能了 这样做的好处是业务无关, 一次开发多次使用。方便管理维护

最后总结一下,本文没有直接给出答案 而是記录了寻找答案的过程。 通过这个过程学会将hive es数据同步到其他NoSQL中,这个实践比理解源码更重要

前提:首先hive es有个结果表最后想通过ES进行查询,hive es是用户的基本信息和用户行为标签和内容标签组成一个大宽表es根据标签组合查人的时候比较快,也适合多维度组合查询。所以现在需要从hive es映射到es

es.nodes表示es的节点多个用“,”分开;
es.resource表示指定的索引和类型;因为在es中查询的时候其实是查询indexindex相当于一个表。
es.mapping.names表示其他字段的对应(可以不写插入时按顺序依次对应即可);
前面的type是hive es外部表中字段名字,后面的type是es中显示的字段名

es查询圈人,入hive es 可能需要2h+的时间如下为读了800M数据的时间,已经40min了读完估计2h+
这里设置了scoll.size为1000,插入完成只要40分钟主要的瓶颈在写入hive es这块,速度提高了3倍还要多1.只查询需偠入库的字段减少网络io,如下es.read.field.include设置以后返回的字段都没了,所以网络io减少了、、

2.设置es参数设置每次查询返回的条数,默认是50跳设置成10000条以后,速度明显加快了

发布了95 篇原创文章 · 获赞 14 · 访问量 3万+

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

hive es整合es,通过建外联表做映射数据实际存储在es。注意:hive es建内部表时数据存储在hdfs与es建外联表时,数据存储在es里


  

我要回帖

更多关于 hive es 的文章

 

随机推荐