023 Hive的索引 Hive的视图 Hive的执行方式

在这里插入图片描述
在这里插入图片描述
这个就没法演示了
数据太大了 几十兆 视频也没给
没法敲
看看截图吧

create external table if not exists log1(
id string comment 'this is id column',
phonenumber bigint,
mac string,
ip string,
url string,
tiele string,
column1 string,
column2 string,
column3 string,
upflow int,
downflow int
)
comment 'this is log table'
row format delimited fields terminated by '\t'
lines terminated by '\n'	
stored as textfile;

load data local inpath '/home/olddata/flow1.log' overwrite into table log1;

select count(l.phonenumber)
from log1 l
group by l.phonenumber
;

建立索引之前的查询时间:

建立索引之后的查询时间:

在这里插入图片描述
在这里插入图片描述.在这里插入图片描述

然后建立索引

在这里插入图片描述
刚开始 没有索引
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后再查询
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后重新构建索引
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
重新构建索引也是比较耗时的

然后创建联合索引
在这里插入图片描述
在这里插入图片描述
然后可以测试一下 我们这里就不测了
在这里插入图片描述
然后创建bitmap索引
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

显示索引:
show index on log1;
创建compact索引:
create index idx_log1_phonenumber
on table log1(phonenumber)
as 'compact'
with deferred rebuild
;
重新构建索引:
alter index idx_log1_phonenumber
on log1 rebuild;

创建联合索引:
create index idx_log1_phonenumberAndId
on table log1(id,phonenumber)
as 'compact'  
with deferred rebuild
;

select * from log1 l 
where l.id = 18080
and l.phonenumber = 779797
;

创建bitmap索引:
create index idx_log1_upflow
on table log1(upflow)
as 'bitmap'
with deferred rebuild
;

删除索引:
drop index if exists idx_log1_upflow on log1;

Hive的视图


1.
在这里插入图片描述
2.
在这里插入图片描述
这还是索引的数据 所以这个视图这块只能截图了
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

创建视图
在这里插入图片描述
显示视图
show tables
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

这个源数据其实是有问题的
在这里插入图片描述
这样 我们看别的表u3
在这里插入图片描述
在这里插入图片描述
创建视图
在这里插入图片描述
然后 查询视图
在这里插入图片描述
描述视图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
删除视图
在这里插入图片描述
在这里插入图片描述
删除对应表之后 视图不能进行查询了
在这里插入图片描述

在这里插入图片描述


Hive的执行方式

在这里插入图片描述
列与列之间的默认分隔符

create table if not exists aa7(
id int,
name string
)
row format delimited fields terminated by '\001'
;

load data local inpath '/home/olddata/aa' overwrite into table aa7;	

在这里插入图片描述
在这里插入图片描述

为什么是空呢
因为 我使用的是tab键分隔的
所以需要修改
在这里插入图片描述

使用shell打开aa所在目录编辑
vi /home/olddata/aa
在这里插入图片描述
好像使用ctrl a 表示 但是我没敲出来
难受
改完后 重新加载数据 就有了
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
查看hive的所有变量
hive > set;
太多了 就截了一张图
在这里插入图片描述
在这里插入图片描述
好像是 只在当前session有效
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

hive --database olqf --hivevar min_limit=1 -e 'select * from aa7 limit ${hivevar:min_limit}';
hive --database olqf -S --hivevar min_limit=1 -e 'select * from aa7 limit ${hivevar:min_limit}';
hive --database olqf --hivevar min_limit=1 -hivevar  t_n=aa7 -e 'select * from ${hivevar:t_n} limit ${hivevar:min_limit}';

加上-S就是不要打印与结果无关的信息
我的数据之前没有处理好 所以这里读不出来
在这里插入图片描述
在这里插入图片描述
换个表还是 rn表

在这里插入图片描述

在这里插入图片描述
3.带参数 加上 导出

3.带参数 加上 导出
vi /home/olddata/user.hql
insert overwrite local directory '/home/olddata/exp1'
row format delimited fields terminated by '\t'
select * from rn;


insert overwrite  directory '/exp1'
row format delimited fields terminated by '\t'
select * from rn
where sno > 5
limit ${hivevar:m_1};

hive -f /home/olddata/user.hql
hive --hivevar m_1=1 -f /home/olddata/user.hql

1.我们先
创建一个文件
vi /home/olddata/user.hql
放入两个语句
在这里插入图片描述
在这里插入图片描述

2.这样如果查询的话 只能用第二句 因为上面的语句 有变量 需要赋值
hive -f /home/olddata/user.hql

hive --database olqf --hivevar m_1=2 -f /home/olddata/user.hql

我们可以提前看一下 /home/olddata/下面没有exp1这个文件 运行完第二句后就有了
没有
在这里插入图片描述

运行完后
在这里插入图片描述
在这里插入图片描述
有了
在这里插入图片描述
在这里插入图片描述
这样就把数据导出来来了
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

另外一种导出方式 使用>>来导出:

hive --database olqf -S --hivevar min_limit=1 -e 'select * from rn limit ${hivevar:min_limit}' > /home/olddata/exp3;

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值