HIVE到ES的映射,以及ES的基本操作

更新时间:2023-05-11 20:17:36 阅读: 评论:0

HIVE到ES的映射,以及ES的基本操作
ES的基本概念:
基本概念
先说Elasticarch的⽂件存储,Elasticarch是⾯向⽂档型数据库,⼀条数据在这⾥就是⼀个⽂档,⽤JSON作为⽂档序列化的格式,⽐如下⾯这条⽤户数据:
{
"name" :    "John",
"x" :      "Male",
"age" :      25,
"birthDate": "1990/05/01",
"about" :    "I love to go rock climbing",
"interests": [ "sports", "music" ]
}
⽤Mysql这样的数据库存储就会容易想到建⽴⼀张Ur表,有balabala的字段等,在Elasticarch⾥这就是⼀个⽂档,当然这个⽂档会属于⼀个Ur的类型,各种各样的类型存在于⼀个索引当中。这⾥有⼀份简易的将Elasticarch和关系型数据术语对照表:
关系数据库⇒数据库⇒表⇒⾏⇒列(Columns)
Elasticarch  ⇒索引(Index)  ⇒类型(type)  ⇒⽂档(Docments)  ⇒字段(Fields)
⼀个 Elasticarch 集群可以包含多个索引(数据库),也就是说其中包含了很多类型(表)。这些类型中包含了很多的⽂档(⾏),然后每个⽂档中⼜包含了很多的字段(列)。Elasticarch的交互,可以使⽤Java API,也可以直接使⽤HTTP的Restful API⽅式,⽐如我们打算插⼊⼀条记录,可以简单发送⼀个HTTP的请求:
PUT /megacorp/employee/1
{
"name" :    "John",
"x" :      "Male",
"age" :      25,
"about" :    "I love to go rock climbing",
"interests": [ "sports", "music" ]
}
索引
Elasticarch是如何做到快速索引的
InfoQ那篇⽂章⾥说Elasticarch使⽤的倒排索引⽐关系型数据库的B-Tree索引快,为什么呢?
什么是B-Tree索引?
⼆叉树查找效率是logN,同时插⼊新的节点不必移动全部节点,所以⽤树型结构存储索引,能同时兼顾插⼊和查询的性能。因此在这个基础上,再结合磁盘的读取特性(顺序读/随机读),传统关系型数据库采⽤了B-Tree/B+Tree这样的数据结构:
为了提⾼查询的效率,减少磁盘寻道次数,将多个值作为⼀个数组通过连续区间存放,⼀次寻道读取多个数据,同时也降低树的⾼度。
什么是倒排索引?
继续上⾯的例⼦,假设有这么⼏条数据(为了简单,去掉about, interests这两个field):
| ID | Name | Age  |  Sex    |
| -- |:------------:| -----:| -----:|
| 1  | Kate        | 24 | Female
| 2  | John        | 24 | Male
| 3  | Bill        | 29 | Male
ID是Elasticarch⾃建的⽂档id,那么Elasticarch建⽴的索引如下:
Name:
| Term | Posting List |
| -- |:----:|
| Kate | 1 |
| John | 2 |
| Bill | 3 |
Age:
| Term | Posting List |
| -- |:----:|
| 24 | [1,2] |
| 29 | 3 |
-----------------------------------------------------------ES实际应⽤----------------------------------------------------------------------------------------------
ES的基本操作:(新建,增,删,改,查)
1.创建索引:(以饱和度算法模型为例⼦:这个是我做的项⽬名字)
PUT /clue_strategies_clue_saturation/
{
"mappings": {
"clue_saturation": {
"properties": {
"uid": {
"type": "integer"
},
"status": {
"type": "integer"
},
"saturation_cnt":{
"type":"integer"
},
"dt": {
"type": "keyword"
}
}
}
}
}
2.查询索引:
GET /clue_strategies_clue_saturation/clue_saturation/_mapping?pretty
3.删除索引:
DELETE /clue_strategies_clue_saturation/
3.1删除ES中指定条件的数据
删除指定条件数据:
POST /clue_strategies_clue_saturation/_delete_by_query
{
"query": {
"match": {
"dt": "2019-09-02"
}
}
}
4.新增数据:
POST /clue_strategies_clue_saturation/clue_saturation/
{
"uid":1,
"status":1,
"saturation_cnt ":10,
"dt":"2019-07-23"
}
5.查询数据:
5.1 时间范围查询:(查询7⽉25⽇的数据)
POST /clue_strategies_clue_saturation/clue_saturation/_arch?pretty {
"size": 5600,
"query": {
"range": {
"dt": {
"lt": "2019-07-26",  --⼩于
"gte": "2019-07-25"  --⼤于等于
}
}
}}
5.2  排序查询:(按状态降序查询)
POST /clue_strategies_clue_saturation/clue_saturation/_arch?pretty {
"query": { "match_all": {} },
"sort": { "status": { "order": "desc" } }
}
5.3 查询指定列:
POST /clue_strategies_clue_saturation/clue_saturation/_arch?pretty
{
"query": { "match_all": {} },
"_source": ["status", "saturation_cnt"]
}
5.4 带条件查询:(查询状态为8的值)
POST /clue_strategies_clue_saturation/clue_saturation/_arch?pretty
{
"query": { "match": { "status": 8} }
}
6.遇到的问题:
字段类型不同:int ES报错:版本问题 改为:integer
decimal(10,5)  与 string  ES有数据,hive查询会报错  解决变为hive 变为string  ES变为keyword            decimal(10,5)  与 double 也不⾏
⽀持建唯⼀索引
没数据报错:加上 'ad.pty'='true'
7.饱和度建表:
-------饱和度建表
CREATE TABLE `features.app_sale_clue_status_saturation_result_es`(
uid          int COMMENT '学规ID',
status        int COMMENT '线索状态',
saturation_cnt int COMMENT '饱和度',
dt                string COMMENT '⽇期'
)
COMMENT '学规线索饱和度(学规+线索状态粒度)'
STORED BY 'org.elasticarch.hadoop.hive.EsStorageHandler'
TBLPROPERTIES (
'es.ate'='fal',
'ad.pty'='true', --防⽌查询为空值报错
'es.mapping.names'='uid:uid,status:status,saturation_cnt:saturation_cnt,dt:dt', --hive字段对应的ES字段'es.http.auth.pass'='ES密码', --ES密码
'es.http.auth.ur'='ES登录名', --ES登录名
'es.nodes'='es-cn-0pp165u620001xs3r.',  --ES地址
'es.ly'='true',
'es.nodes.discovery' = 'fal',
'es.port'='9200',
'adata'='true',
'es.resource'='clue_strategies_clue_saturation/clue_saturation'  --ES中索引
)

本文发布于:2023-05-11 20:17:36,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/589905.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:查询   数据   数据库   节点
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图