我是靠谱客的博主 传统夕阳,最近开发中收集的这篇文章主要介绍Hive练习题--分区分区表,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

分区表

单级分区表(一级文件夹)

多级分区表(多级文件夹)

小结


#博学谷IT学习技术支持#

鸽了这么久,最近在做项目有点忙不过来。。。。

分区表

  • 单级分区表(一级文件夹)

    • 用到的数据(score.txt)
    • 01	01	80
      01	02	90
      01	03	99
      02	01	70
      02	02	60
      02	03	80
      03	01	80
      03	02	80
      03	03	80
      04	01	50
      04	02	30
      04	03	20
      05	01	76
      05	02	87
      06	01	31
      06	03	34
      07	02	89
      07	03	98
      

-- 1、创建分区表
静态分区:
所有的分区的值需要手动指定
动态分区:
所有的分区的值自动生成
use myhive;
create table score
(
sid
string, -- 学号
cid
string, -- 学科id
sscore int
-- 成绩
)
partitioned by (month string)
row format delimited fields terminated by 't';
-- 2、给分区表添加数据
-- 3.查询数据
-- 3.1 条件查询 - 只查询6月份的月考成绩
-- 3.1 条件查询 - 只查询6月份或7月份成绩

答案如下

#答案
-- 2、给分区表添加数据
-- /user/hive/warehouse/myhive.db/score/month=202006
load data local inpath '/export/data/score.txt' into table score partition (month='202006');
-- /user/hive/warehouse/myhive.db/score/month=202007
load data local inpath '/export/data/score.txt' into table score partition (month='202007');
-- /user/hive/warehouse/myhive.db/score/month=202008
load data local inpath '/export/data/score.txt' into table score partition (month='202008');
-- 3.查询数据
select * from score;
-- 3.1 条件查询 - 只查询6月份的月考成绩
select * from score where
month='202006';
-- 3.1 条件查询 - 只查询6月份或7月份成绩
select * from score where
month='202007';

  • 多级分区表(多级文件夹)

#建表
create table score2
(
sid
string,
cid
string,
sscore int
)
partitioned by (year string,month string,day string)
row format delimited fields terminated by 't';
#多级分区例1
load data local inpath '/export/data/score.txt'
into table score2 partition (year='2022',month='01',day='01');
#多级分区例2
load data local inpath '/export/data/score.txt'
into table score2 partition (year='2022',month='02',day='02');
-- 查询
-- 查询所有数据
-- 查询指定时间的成绩(2022年成绩)
-- 查询指定时间的成绩(2023年2月成绩)
-- 查询指定时间的成绩(2023年2月2日成绩)
-- 查看分区信息
-- 查看表结构,包含分区信息
-- 添加分区
--删除分区

答案如下

#答案
-- 查询
-- 查询所有数据
select * from score2 ;
-- 查询指定时间的成绩(2022年成绩)
select * from score2 where year='2022';
-- 查询指定时间的成绩(2023年2月成绩)
select * from score2 where year='2023' and month='02';
-- 查询指定时间的成绩(2023年2月2日成绩)
select * from score2 where year='2023' and month='02' and day = '02';
--- union all,将两个表的结果上下拼接在一起(和join不同,join是左右拼接)
explain select * from score where month = '202006' union all select * from score where month = '202007';
select * from score where month = '202006' or month = '202007';
-- 查看分区信息
show
partitions score;
show
partitions score2;
-- 查看表结构,包含分区信息
desc score;
desc formatted
covid2;
//Table Type: EXTERNAL_TABLE
-- 添加分区
alter table score add partition(month='202009');
alter table score add partition(month='202010') partition(month='202011');
--删除分区
alter table score drop partition(month = '202010');

小结

这些都是来自我自己的笔记,可以让你认识基础的分区表(静态)

最后

以上就是传统夕阳为你收集整理的Hive练习题--分区分区表的全部内容,希望文章能够帮你解决Hive练习题--分区分区表所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部