hive 高级查询1

hadoop hive 高级查询

select基础

1.0 一般查询

1)select * from table_name

2)select * from table_name where name=‘....‘ limit 1;

1.1cte和嵌套查询

1)with t as(select....) select * from t;

2)select * from(select....) a;(a一定要添加)

1.2列匹配正则表达式

在添加数据前:SET hive.support.quoted.identifiers = none;

就可以使用匹配列:SELECT ^o.* FROM offers;

1.3 虚拟列(Virtual Columns)

输入文件名称: select input_file_name from emps;

全局文件位置:select block_offset_inside_file from emps;(加重为固定格式~~~~)

我们会把小表放在前面,后面的表格称为基表

在我们内外关联的时候,先将外表的一行数据和子表的一行数据进行判断,存在相当于关键词exit (not exists),mysql中的关键词 in(not in)

select * from userinfos u where userid not in(select b.userid from bankcards b where u.userid=b.userid group by userid);

Hive join-Mapjoin(内外部关联)

首先我们要先开启join操作:set hive.auto.convert.join

join——>相当于inner join

left join——>只查左边的数据

right join——>只查右边的数据

full join——>查询所有的数据

Mapjoin操作不支持:

1)在UNION ALL, LATERAL VIEW, GROUP BY/JOIN/SORT BY/CLUSTER BY/DISTRIBUTE BY等操作后面

2)在UNION, JOIN 以及其他MAPJOIN之前

Hive 集合操作(union)

1)Union all:合并后保留重复项

2)Union :合并后删除重复项

装载数据:load移动数据

1)load data local inpath ‘......‘ overwrite into table.....

2)load data local inpath ‘.......‘ overwrite in to table....partition(字段)

!!!没有local 就是在hdfs 中的地址

!!! LOCAL表示文件位于本地,OVERWRITE表示覆盖现有数据

装载数据:Insert表插入数据-2

1)单条语句插入(从一个表格中插入某一个)

from ctas_employee

insert overwrite table .....select ‘....‘

!!!相当于两个表的列数相同属性相同,插入的数据才会有

2)多条语句插入(overwrite table 后面跟其他表格)

from ctas_employee

insert overwrite table employee select *

insert overwrite table employee_internal select *;

!!!在第一条语句的结尾不加;则可执行多条语句

3)插入到分区

from ctas_patitioned

insert overwrite table employee PARTITION (year, month)

select *,‘2018‘,‘09‘;

!!!在执行静态插入时要指定(year=2018,month=9)

!!!在执行动态插入时不需要指定,如果插入分区的关键字少了,直接在select中添加数值即可。

insert 语句将数据插入/导出到文件

-- 从同一数据源插入本地文件,hdfs文件,表(关键是同一数据源)

from ctas_employee(固定语句)

本地:insert overwrite local directory ‘/tmp/out1‘ select *;

hdfs:insert overwrite directory ‘/tmp/out1‘ select *;

table:insert overwrite table employee_internal select *;

Hive数据交换-import/export

1) 使用export导出数据

export table table_name to ‘hdfs路径‘;

export table table_name_partition(year,month) to ‘hdfs路径‘;(year,month的数据要有,才会生成新的表格)

import table table_name from ‘之前导出的数据地址‘

import table old_table from ‘之前导出的数据地址’ (以有表格的分区要没有才可以导入)

删除分区: alter table uu drop partition(year=2017,month=12);

Hive数据排序 ORDER BY

select * from table_name order by 列名 ;

Hive数据排序-SORT BY/DISTRIBUTE BY

!!!关键:设置reduce 数量:set mapred.reduce.tasks = 15 (排序和reduce的数量有关)

1) sort by(对每个reducer中的数据进行排序)

设置reduce 数量:set mapred.reduce.tasks = 1

当reducer数量设置为1时,才可以保证表格的排序有效

当reducer数量设置为2时,分成两段进行排序(表格的排序为两种排序)

2) distribute by(类似于group by)

类似于先进行分组在配合sort by desc使用(前面的属性)如下

Hive 数据排序-CLUSTER BY(集群)

3)cluster by = distribute by + sort by

SELECT name, employee_id FROM employee_hr CLUSTER BY name;

n为了充分利用所有的Reducer来执行全局排序,可以先使用CLUSTER BY,然后使用ORDER BY

实例一:(解决数据的倾斜)

设置reduce 数量:set mapred.reduce.tasks = 15

1.大小表

? 1.mapreduce

? 1.cacheFile

? 2.groupCombinapartition

? 2.hive中的处理

? 1.mapjoin中:set hive.auto.convert.join=true 25M

2.部分数据相对特别少

? 1.mapreduce

? 1.groupCombinapartition

? 2.hive

? 1.partition by (year,month)分区表

原文地址:https://www.cnblogs.com/tudousiya/p/11235217.html

时间: 2024-10-21 22:37:39

hive 高级查询1的相关文章

hive 高级查询

hadoop hive 高级查询 Hive聚合运算 - Group by (基本内置聚合函数)nmax, min, count, sum, avg 1)Hive基本内置聚合函数与group by 一起使用 2)支持按位置编号分组 set hive.groupby.orderby.position.alias=true; select name,sum(score) from table_name group by name;——>使用表达式 Hive聚合运算-hiving 1)对group by

Hive高级查询(group by、 order by、 join等)

查询操作 group by. order by. join . distribute by. sort by. clusrer by. union all 底层的实现 mapreduce 常见的聚合操作 count计数 count(*) 所有值不全为NULL时,加1操作 count(1) 不管有没有值,只要有这条记录,值就加1 count(col) col列里面的值为null,值不会加1,这个列里面的值不为NULL,才加1 sum求和 sum(可转成数字的值) 返回bigint avg求平均值

07-Hive高级查询order by、group by

声明:未经本人允许,不得转载哦! 哈喽,大家好.这两天就要高考了,我原本是一名物理老师,这一届初高中的学生带完,估计就要开始找大数据岗位的工作了.目前掌握的是技能有java+linux++mysql+hadoop+hive+hbase,正在学习的是shell,计划2016年接着要学习的是scala+spark.祝我好运吧. 今天我们一起来学习的是[Hive高级查询group.order语法].话不多说,咱们开始吧. 1 Hive的高级查询操作有很多,主要有: group by #按K来把数据进行

hive高级操作(优化,数据倾斜优化)

2019/2/21 星期四 hive高级操作(优化,数据倾斜优化) 分区表/桶表应用,skew,map-join //见hive的基本语法行列转换 hive 优化hive 优化思想Explain 的使用经典案例(distinct count) 数据倾斜的原因操作:关键词 情形 后果1.Join 其中一个表较小,但是key 集中分发到某一个或几个Reduce 上的数据远高于平均值 :2.大表与大表,但是分桶的判断字段0 值或空值过多这些空值都由一个reduce 处理,非常慢:3.group by

大数据技术之_08_Hive学习_04_压缩和存储(Hive高级)+ 企业级调优(Hive优化)

第8章 压缩和存储(Hive高级)8.1 Hadoop源码编译支持Snappy压缩8.1.1 资源准备8.1.2 jar包安装8.1.3 编译源码8.2 Hadoop压缩配置8.2.1 MR支持的压缩编码8.2.2 压缩参数配置8.3 开启Map输出阶段压缩8.4 开启Reduce输出阶段压缩8.5 文件存储格式8.5.1 列式存储和行式存储8.5.2 TextFile格式8.5.3 Orc格式8.5.4 Parquet格式8.5.5 主流文件存储格式对比实验8.6 存储和压缩结合8.6.1 修

数据库——基础(数据库操作,表格操作)——增加高级查询

笔记 LAMP:Linx(操作系统) A(阿帕奇)——网页的应用程序 M(Mysql):体积小,应用简单 P(PHP) 第一步:搭建网页环境——A\M\P WAMP:用WAMP搭建环境 DW:更好的显示 数据库的基本操作: 数据库——表结构——字段(列) 每一行数据成为一条数据(记录) 特点:关系型数据库,有严格的规范 1.必须有主键:能够唯一标识一条数据的字段 2 T-SQL:通用的数据库操作语句 自增长列code(主键列) ;连接键表 最后一个字段不加 ,#注释 创建表:create tab

MYSQL中的多类型查询及高级查询操作

离散查询select * from car where price=30 or price=40 or price=50 or price=60;select * from car where price in(30,40,50,60)取出数据select * from car where price not in(30,40,50,60)去掉数据 聚合函数(统计查询)select count(*) from carselect count(code) from car #取所有的数据条数sel

Linq高级查询与分页查询

Linq高级查询 以~开头: r=>r.Name.StartsWith("李"); 以~结尾: r=>r.Name.EndsWith("光"); 包含(模糊查询): r=>r.Name.Contains("四"); 数据总个数: Con.Goods.Count();||Con.Users.ToList().count; 最大值: Con.Goods.ToList().Max(r=>r.Price); 最小值: Con.Go

数据库的高级查询

高级查询 1.连接查询(对列的扩展) 第一种形式:select * from Info,Nation #会形成笛卡尔积select * from Info,Nation where Info.Nation = Nation.Code #加上筛选条件 select Info.Code,Info.Name,Sex,Nation.Name,Birthday from Info,Nation where Info.Nation = Nation.Code#查询指定列 select Info.Code a