Hive命令

1.Hive的交互方式 bin/hive

第一种

cd /export/servers/apache-hive-2.1.1-bin/
             bin/hive

第二种 使用sql语句或者sql脚本进行交互

bin/hive -e “create databases if not exists mytest;”
脚本方式
先创建hive.sql
create database if not exists mytest;
use mytest;
create table stu(id int,name string);
然后运行指令 bin/hive -f /export/servers/hive.sql
启动beeline服务 hiveserver2

2查看所有数据仓库 查看所有表

show databases; show tables;

3 创建一个mystest数据库

create databases if not exists mytest if not exists 如果没有对应数据库就创建,有的话就不报错
创建数据库并指定位置 create database myhive2 location ‘/myhive2’;

创建表

先选择对应数据库 use mystest; 然后创建表 create table t_test(id int,name string);

5 设置键值对信息

creats database foo with dbproperties(‘owner’=‘itcast’,‘data’=‘20190120’);
修改键值对
alter database foo set dbproperties(‘owner’=‘itheima’);

6 查看foo数据库更多详细信息 查看stu2数据表详细信息

desc database extended foo; desc formatted stu2;
强制删除数据库,包含数据库下面的表一起删除
drop database myhive cascade;

¥¥¥¥beeline连接

1.bin/hive --service metastore

2.开启hiveserver2服务

3.bin/beeline
4.!connect jdbc:hive2://node03:10000

7内部表的操作

use myhive;
create table stu(id int,name string);
insert into stu values (1,“zhangsan”); #插入数据
查看表数据 select * from stu;

7.2 外部表的操作

create external table stu(id int,name string); 多一个关键字external就可以创建外部表
本地加载数据
load data local inpath ‘/export/servers/hivedatas/student.csv’ into table student;
load data local inpath ‘/export/servers/hivedatas/student.csv’ overwrite into table student; 多 overwrite关键字会覆盖原有数据
hdfs加载数据
load data inpath ‘/export/servers/hivedatas/student.csv’ into table student; 较本地加载而言少一个关键字local

8# 通过复制表结构和表内容创建新表

create table stu3 as select * from stu2;
复制表结构
create table stu4 like stu;
删除stu2表
drop table stu2;

9 分区表就是分目录

create table score(s_id string,c_id string, s_score int) partitioned by (month string) row format delimited fields terminated by ‘\t’;
分区关键字 partitioned by
加载数据到分区表
load data local inpath ‘/export/servers/hivedatas/score.csv’ into table score partition (month=‘201806’); 关键字partition
多分区其实是目录的嵌套
union all 多个目录查询

10 查看分区 show partitions score;

添加一个分区 alter table score add partition(month=‘201805’);
删除分区 alter table score drop partition(month = ‘201806’);

11分桶关键字clustered by

分桶表数据加载不能通过hdfs 或者通过load data 只能通过创建普通表然后通过insert overwrite去给分桶表加载数据

12 修改表结构

重命名 alter table old_name rename to new_name;
添加列 alter table score4 add columns(mycol string,mysco int);
修改列名 alter table score4 change column mysco mysconew int;
删除表 drop table score5;

13 hive查询语法

13.1选择特定列的表查询 select c_id,s_nama from stu;

列别名 select c_id as myid,s_name from stu;

13.2求总行数 select count(1) from stu; count(1) 类似与count(*)

求分数的最大值 select max(s_score) from score;
求分数的最小值 select min(s_score) from score;
求分数的总和 select sum(s_score) from score;
求分数的平均值 select avg(s_score) from score;

13.3 limit语句 下面之返回的行数

13.4 where语句 条件过滤 where 子句紧随from子句

查询分数等于80的数据 select * from score where s_score=80;
查询成绩为空的数据 select * from score where s_score is null;
查询升级是80 和90的数据 select * from score where s_score in (80,90);
查询分数在80到100之间 select * from score where s_score between 80 and 100;

13.5 like 和rlike a like b (%代表多个字符,_代表一个字符)

‘x%’ 必须以字母x为开头 ‘%x’ 必须以字母x为结束
查找以8开头的所有成绩 select * from score where s_score like ‘8%’;
查找第二个数值为9的数据 select * from score where s_score like ‘_8%’;
查找s_idz中含有1的数据 select * from score where s_id rlike ‘[1]’ ; rlike[1]与like '%1%'等同

13.6 逻辑运算符 and or not

14 分组

14.1 group by 语句

计算每个学生的平均分数 select s_id ,avg(s_score) from score group by s_id;

15 having 语句

having 与where 的不同点
1.where 针对的是表中的列发挥作用,查询数据,having针对查询结果发挥作用
2.where 后面不能写分组语句,having后面可以

16 join 语句

​ select s.s_id,s.s_score,s.s_name from score s join student stu on s.s_id = syu.s_id;
表别名的好处
​ 别名可以简化查询 使用表名前缀可以提高执行效率;
16.1 内连接 inner join 两表交际
16.2 左外连接 left join
​ 16.3 右外连接 right join
​ 16.4 多表连接

排序

17.1 全局排序 Order by 全局排序一个reduce 升序asc(默认) 降序desc oeder by 在select语句的结尾

按照学生id和平均成绩经行排序 select s_id,avg(s_score) avg from score group by s_id,avg;

17.2 sort by 买个reduce内部的局部排序

1.设置reduce个数 set mapreduce。job.reduce=3
2.查看设置的reduce个数 set mapreduce.job.reduce;
将查询结果导入到文件中 insert overwrite local directory ‘/export/servers/hivedatas/sort’ select * from score sort by s_score;

17.3 distribute by 分区排序 结合sort by使用

注意:hive要求 distribute by 语句要写在sort by 之前

17.4 cluster by 可以看作distribute by+cort by但是必须实在字段相同的条件下

cluster by 只能降序排列
等价的写法 select * from score cluster by s_id; ==select * from score distribute by s_id sort by s_id;

18 hive shell 参数

18.1 hive 命令行

bin/hive -e 从命令行执行HQL语句
bun/hive -f 从命令行执行HQL脚本

19 hive函数

查看系统自带的函数 hive> show functions;
显示自带的函数的用法 hive> desc function upper;
详细显示自带的函数的用法 hive> desc function extended upper;

19.1 常见内置函数

字符串连接函数: concat select concat(‘abc’,‘def’,‘gh’);
#带分隔符字符串连接函数: concat_ws select concat_ws(’,’,‘abc’,‘def’,‘gh’);
#cast类型转换 select cast(1.5 as int);
#get_json_object(json 解析函数,用来处理json,必须是json格式) select get_json_object(’{“name”:“jack”,“age”:“20”}’,’$.name’);
#URL解析函数 select parse_url(‘http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1’, ‘HOST’);
#explode:把map集合中每个键值对或数组中的每个元素都单独生成一行的形式

19.2 自定义函数

UDF 一进一出
UDAF 多进一出
UDTF 一进多出

20 hive 数据储存格式

Hive支持的存储数的格式主要有:TEXTFILE(行式存储) 、SEQUENCEFILE(行式存储)、ORC(列式存储)、PARQUET(列式存储)。

21 hive 调优

Fetch抓取和本地模式
hive中对某些情况的查询可以不必使用MapReduce计算。例如:SELECT * FROM score;在这种情况下,Hive可以简单地读取score对应的存储目录下的文件,然后输出查询结果到控制台。通过设置hive.fetch.task.conversion参数,可以控制查询语句是否走MapReduce

本地模式

大多数的Hadoop Job是需要Hadoop提供的完整的可扩展性来处理大数据集的。不过,有时Hive的输入数据量是非常小的。在这种情况下,为查询触发执行任务时消耗可能会比实际job的执行时间要多的多。对于大多数这种情况,Hive可以通过本地模式在单台机器上处理所有的任务。对于小数据集,执行时间可以明显被缩短。

用户可以通过设置hive.exec.mode.local.auto的值为true,来让Hive在适当的时候自动启动这个优化。
21.1动态分区

管道命令

ps -ef | grep impala

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值