hive学习笔记之四:分区表

create table t9 (name string, age int)

partitioned by (city string)

row format delimited

fields terminated by ‘,’;

  1. 查看:

hive> desc t9;

OK

name string

age int

city string

Partition Information

col_name data_type comment

city string

Time taken: 0.159 seconds, Fetched: 8 row(s)

  1. 创建名为009.txt的文本文件,内容如下,可见每行只有name和age两个字段,用来分区的city字段不在这里设置,而是在执行导入命令的时候设置,稍后就会见到:

tom,11

jerry,12

  1. 导入数据的命令如下,可见导入命令中制定了city字段,也就是说一次导入的所有数据,city字段值都是同一个:

load data

local inpath ‘/home/hadoop/temp/202010/25/009.txt’

into table t9

partition(city=‘shenzhen’);

  1. 再执行一次导入操作,命令如下,city的值从前面的shenzhen改为guangzhou:

load data

local inpath ‘/home/hadoop/temp/202010/25/009.txt’

into table t9

partition(city=‘guangzhou’);

  1. 查询数据,可见一共四条数据,city共有两个值:

hive> select * from t9;

OK

t9.name t9.age t9.city

tom 11 guangzhou

jerry 12 guangzhou

tom 11 shenzhen

jerry 12 shenzhen

Time taken: 0.104 seconds, Fetched: 4 row(s)

  1. 前面曾提到分区实际上是不同的子目录,来看一下是不是如此,如下图,红框是t9的文件目录,下面有两个子目录city=guangzhou和city=shenzhen:

在这里插入图片描述

  1. 查看子目录里面文件的内容,可见每条记录只有name和age两个字段:

[hadoop@node0 bin]$ ./hadoop fs -ls /user/hive/warehouse/t9/city=guangzhou

Found 1 items

-rwxr-xr-x 3 hadoop supergroup 16 2020-10-31 16:47 /user/hive/warehouse/t9/city=guangzhou/009.txt

[hadoop@node0 bin]$ ./hadoop fs -cat /user/hive/warehouse/t9/city=guangzhou/009.txt

tom,11

jerry,12

[hadoop@node0 bin]$

以上就是以单个字段做静态分区的实践,接下来尝试多字段分区;

静态分区(多字段分区)

  1. 新建名为t10的表,有两个分区字段:province和city,建表语句:

create table t10 (name string, age int)

partitioned by (province string, city string)

row format delimited

fields terminated by ‘,’;

  1. 上述建表语句中,分区字段province写在了city前面,这就意味着第一级子目录是province值,每个province子目录,再按照city值建立二级子目录,图示如下:

在这里插入图片描述

  1. 第一次导入,province=‘shanxi’, city=‘xian’:

load data

local inpath ‘/home/hadoop/temp/202010/25/009.txt’

into table t10

partition(province=‘shanxi’, city=‘xian’);

  1. 第二次导入,province=‘shanxi’, city=‘xian’:

load data

local inpath ‘/home/hadoop/temp/202010/25/009.txt’

into table t10

partition(province=‘shanxi’, city=‘hanzhong’);

  1. 第三次导入,province=‘guangdong’, city=‘guangzhou’:

load data

local inpath ‘/home/hadoop/temp/202010/25/009.txt’

into table t10

partition(province=‘guangdong’, city=‘guangzhou’);

  1. 第四次导入,province=‘guangdong’, city=‘shenzhen’:

load data

local inpath ‘/home/hadoop/temp/202010/25/009.txt’

into table t10

partition(province=‘guangdong’, city=‘shenzhen’);

  1. 全部数据如下:

先自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以扫码领取!

img

最后

按照上面的过程,4个月的时间刚刚好。当然Java的体系是很庞大的,还有很多更高级的技能需要掌握,但不要着急,这些完全可以放到以后工作中边用别学。

学习编程就是一个由混沌到有序的过程,所以你在学习过程中,如果一时碰到理解不了的知识点,大可不必沮丧,更不要气馁,这都是正常的不能再正常的事情了,不过是“人同此心,心同此理”的暂时而已。

道路是曲折的,前途是光明的!”

e=“zoom: 33%;” />

最后

按照上面的过程,4个月的时间刚刚好。当然Java的体系是很庞大的,还有很多更高级的技能需要掌握,但不要着急,这些完全可以放到以后工作中边用别学。

学习编程就是一个由混沌到有序的过程,所以你在学习过程中,如果一时碰到理解不了的知识点,大可不必沮丧,更不要气馁,这都是正常的不能再正常的事情了,不过是“人同此心,心同此理”的暂时而已。

道路是曲折的,前途是光明的!”

[外链图片转存中…(img-E5m84B6F-1711368036620)]

[外链图片转存中…(img-mhXLuL72-1711368036620)]

需要更多Java资料的小伙伴可以帮忙点赞+关注,点击传送门,即可免费领取!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值