HIVE 基础(四)
创始人
2024-05-26 14:12:07
0

目录

分桶(Bucket)

设定属性

定义分桶

案例

建表语句

表数据

上传到数据

创建分桶语句

加载数据

 分桶抽样(Sampling)

随机抽样---整行数据

随机抽样---指定列

随机抽样---百分比

 随机抽样---抽取行数

Hive视图(View)

视图概述

应用场景

创建视图

查看视图定义

删除视图

更改视图属性

更改视图定义

Hive侧视图(Lateral View)


分桶(Bucket)

分桶对应于HDFS中的文件

  • 更高的查询处理效率
  • 使抽样(sampling)更高效 
  • 一般根据"桶列"的哈希函数将数据进行分桶

设定属性

SET hive.enforce.bucketing = true;

定义分桶

clustered by(employee) into 2 buckets

分桶只有动态分桶

必须使用INSERT方式加载数据

案例

建表语句

create table employee_id
(name         string,employee_id  int,work_place   array,gender_age   struct,skills_score map,depart_title map>
)row format delimitedfields terminated by '|'collection items terminated by ','map keys terminated by ':'lines terminated by '\n';

表数据

Michael|100|Montreal,Toronto|Male,30|DB:80|Product:DeveloperLead
Will|101|Montreal|Male,35|Perl:85|Product:Lead,Test:Lead
Steven|102|New York|Female,27|Python:80|Test:Lead,COE:Architect
Lucy|103|Vancouver|Female,57|Sales:89,HR:94|Sales:Lead
Mike|104|Montreal|Male,35|Perl:85|Product:Lead,Test:Lead
Shelley|105|New York|Female,27|Python:80|Test:Lead,COE:Architect
Luly|106|Vancouver|Female,57|Sales:89,HR:94|Sales:Lead
Lily|107|Montreal|Male,35|Perl:85|Product:Lead,Test:Lead
Shell|108|New York|Female,27|Python:80|Test:Lead,COE:Architect
Mich|109|Vancouver|Female,57|Sales:89,HR:94|Sales:Lead
Dayong|110|Montreal|Male,35|Perl:85|Product:Lead,Test:Lead
Sara|111|New York|Female,27|Python:80|Test:Lead,COE:Architect
Roman|112|Vancouver|Female,57|Sales:89,HR:94|Sales:Lead
Christine|113|Montreal|Male,35|Perl:85|Product:Lead,Test:Lead
Eman|114|New York|Female,27|Python:80|Test:Lead,COE:Architect
Alex|115|Vancouver|Female,57|Sales:89,HR:94|Sales:Lead
Alan|116|Montreal|Male,35|Perl:85|Product:Lead,Test:Lead
Andy|117|New York|Female,27|Python:80|Test:Lead,COE:Architect
Ryan|118|Vancouver|Female,57|Sales:89,HR:94|Sales:Lead
Rome|119|Montreal|Male,35|Perl:85|Product:Lead,Test:Lead
Lym|120|New York|Female,27|Python:80|Test:Lead,COE:Architect
Linm|121|Vancouver|Female,57|Sales:89,HR:94|Sales:Lead
Dach|122|Montreal|Male,35|Perl:85|Product:Lead,Test:Lead
Ilon|123|New York|Female,27|Python:80|Test:Lead,COE:Architect
Elaine|124|Vancouver|Female,57|Sales:89,HR:94|Sales:Lead

上传到数据

load data local inpath '/opt/stufile/employee_id.txt' overwrite into table employee_id;

创建分桶语句

create table employee_id_buckets
(name         string,employee_id  int,work_place   array,gender_age   struct,skills_score map,depart_title map>
) clustered by (employee_id) into 2 bucketsrow format delimitedfields terminated by '|'collection items terminated by ','map keys terminated by ':';

clustered by (employee_id) into 2 buckets 含义是:把employee_id设置两个分桶

加载数据

insert overwrite table employee_id_buckets select * from employee_id;

 分桶抽样(Sampling)

随机抽样---整行数据

select *
from employee_id_buckets tablesample (bucket 1 out of 2 on rand());

随机抽样---指定列

(使用分桶列更高效)

select *
from employee_id_buckets tablesample (bucket 1 out of 2 on employee_id);

随机抽样---百分比

select *
from employee_id_buckets tablesample (10 percent);

 随机抽样---抽取行数

select *
from employee_id_buckets tablesample (10 rows);

Hive视图(View)

视图概述

  • 通过隐藏子查询、连接和函数来简化查询的逻辑结构
  • 只保存定义,不存储数据
  • 如果删除或更改基础表,则查询视图将失败
  • 视图是只读的,不能插入或装载数据

应用场景

  • 将特定的列提供给用户,保护数据隐私
  • 用于查询语句复杂的场景

创建视图

支持 CTE, ORDER BY, LIMIT, JOIN等

create view view_name as select statement;

查看视图定义

show create table view_name;

删除视图

drop view_name;

更改视图属性

alter view view_name set tblproperties ('comment' = 'This is a view');

更改视图定义

alter view view_name as select statement;

Hive侧视图(Lateral View)

与表生成函数结合使用,将函数的输入和输出连接

OUTER关键字:即使output为空也会生成结果

select name, workplace, loc
from employee lateral view outer explode(split(null, ',')) a as loc;

 

支持多层级

select name,wps,gender_age.gender, gender_age.age,skill,score,depart,title
from employeelateral view explode(workplace) work_place as wpslateral view explode(skills_score) sks as skill, scorelateral view explode(depart_title) ga as depart, title;

 

相关内容

热门资讯

A股最新!603719,控制权... 良品铺子(603719)7月10日晚间公告,公司近日收到控股股宁波汉意创业投资合伙企业(有限合伙)(...
长龄液压:核芯破浪拟以36.2... 长龄液压晚间公告,2025年7月10日,核芯听涛与夏继发、夏泽民,澄联双盈与夏继发分别签署的《股份转...
浙江推动国际工程供应链协同 赋... 来源:中国新闻网 中新网杭州7月10日电(蓝伊旎)7月10日,“浙链全球-携手出海”活动启航暨国际供...
业绩预喜汇总丨这家公司上半年净... 天保基建:上半年净利同比预增1581.8%—2329.27%华茂股份:上半年净利同比预增293.36...
“知了壳”收购商:是中药材,行... 来源:九派新闻 伴随着金蝉上市,蝉蜕也迎来收购期。蝉蜕,俗称知了壳,是金蝉蜕去的皮,也是一味中药材,...
国办发文要求加大稳就业政策支持... 每经记者|张宏    每经编辑|陈星     7月9日,国务院办公厅印发的《关于进...
产量越大亏损越重 乐凯胶片停产... 每经记者|杨卉    每经编辑|陈俊杰     此前靠光伏业务打赢“翻身仗”,甚至...
女子拒绝“干3人活儿”被开除,... 转自:扬子晚报因为两名同事接连离职,高女士陆续被要求接手两名同事的工作。因为拒绝接手第二名离职同事的...
大学生创业计大学生创业策划书范... 就业前景:民以食为天,快速的时代步伐加快了生活的节奏,但是吃仍是离不开的。忙碌的生活,但餐桌上也是越...
华夏基金:10%股权变更已完成... 7月10日晚间华夏基金发布公告称,根据华夏基金股东会决议,并经证监会核准,华夏基金原股东天津海鹏科技...