1、创建分区表

hive> create table weather_list(year int,data int) partitioned by (createtime string,area string) row format delimited fields terminated by ",";

修改表:

hive> alter table weather_list change data new_data int;
hive> alter table weather_list change year new_year int;

1.1、加载数据

hive> load data local inpath '/home/hadoop/sampler/w2.csv' into table weather_list partition(createtime='2011-01-01',area='bj');
Loading data to table busdata.weather_list partition (createtime=2011-01-01, area=bj)
OK
Time taken: 1.455 seconds
hive> load data local inpath '/home/hadoop/sampler/w3.csv' into table weather_list partition(createtime='2011-01-02',area='sc');
Loading data to table busdata.weather_list partition (createtime=2011-01-02, area=sc)
OK
Time taken: 1.394 seconds
hive> load data local inpath '/home/hadoop/sampler/w4.csv' into table weather_list partition(createtime='2011-01-03',area='tj');
Loading data to table busdata.weather_list partition (createtime=2011-01-03, area=tj)
OK
Time taken: 1.568 seconds
hive> load data local inpath '/home/hadoop/sampler/w4.csv' into table weather_list partition(createtime='2011-01-04',area='sz');
Loading data to table busdata.weather_list partition (createtime=2011-01-04, area=sz)
OK
Time taken: 1.209 seconds
hive> load data local inpath '/home/hadoop/sampler/w5.csv' into table weather_list partition(createtime='2011-01-05',area='gz');
Loading data to table busdata.weather_list partition (createtime=2011-01-05, area=gz)
OK
Time taken: 1.148 seconds
hive> load data local inpath '/home/hadoop/sampler/w5.csv' into table weather_list partition(createtime='2011-01-01',area='gz');
Loading data to table busdata.weather_list partition (createtime=2011-01-01, area=gz)
OK
Time taken: 1.278 seconds

partition的分区字段体现在存储目录上,与文件中的实际存储字段没有关系。

hive> dfs -ls /hive/warehouse/busdata.db/weather_list/createtime=2011-01-01/area=gz;
Found 6 items
-rw-r--r-- 1 hadoop supergroup 18018 2019-03-05 22:14 /hive/warehouse/busdata.db/weather_list/createtime=2011-01-01/area=gz/w1.csv
-rw-r--r-- 1 hadoop supergroup 18022 2019-03-05 22:14 /hive/warehouse/busdata.db/weather_list/createtime=2011-01-01/area=gz/w2.csv
-rw-r--r-- 1 hadoop supergroup 18028 2019-03-05 22:14 /hive/warehouse/busdata.db/weather_list/createtime=2011-01-01/area=gz/w3.csv
-rw-r--r-- 1 hadoop supergroup 18022 2019-03-05 22:14 /hive/warehouse/busdata.db/weather_list/createtime=2011-01-01/area=gz/w4.csv
-rw-r--r-- 1 hadoop supergroup 18027 2019-03-05 22:12 /hive/warehouse/busdata.db/weather_list/createtime=2011-01-01/area=gz/w5.csv
-rw-r--r-- 1 hadoop supergroup 18027 2019-03-05 22:14 /hive/warehouse/busdata.db/weather_list/createtime=2011-01-01/area=gz/w5_copy_1.csv
hive> dfs -ls /hive/warehouse/busdata.db/weather_list/createtime=2011-01-01;
Found 2 items
drwxr-xr-x - hadoop supergroup 0 2019-03-05 22:09 /hive/warehouse/busdata.db/weather_list/createtime=2011-01-01/area=bj
drwxr-xr-x - hadoop supergroup 0 2019-03-05 22:14 /hive/warehouse/busdata.db/weather_list/createtime=2011-01-01/area=gz

1.2、显示分区信息

hive> show partitions weather_list;
OK
createtime=2010-01-01/area=bj
createtime=2010-01-01/area=sh
createtime=2010-01-01/area=yn
createtime=2010-01-02/area=sh
createtime=2011-01-01/area=bj
createtime=2011-01-01/area=gz
createtime=2011-01-02/area=sc
createtime=2011-01-03/area=tj
createtime=2011-01-04/area=sz
createtime=2011-01-05/area=gz
Time taken: 0.584 seconds, Fetched: 10 row(s)

1.3、分区列属于表的正式列,但是文件中没有存储分区列信息。分区列的信息是从目录中读取的。

hive> select * from weather_list where area='bj' limit 10;
OK
1999 71 2010-01-01 bj
1994 57 2010-01-01 bj
1995 33 2010-01-01 bj
1993 44 2010-01-01 bj
1994 99 2010-01-01 bj
1994 83 2010-01-01 bj
1995 59 2010-01-01 bj
1991 32 2010-01-01 bj
1992 74 2010-01-01 bj
2000 56 2010-01-01 bj
Time taken: 2.527 seconds, Fetched: 10 row(s)

2、分桶表

2.1、检查分桶属性,设置分桶属性是为了使用hive来自动分桶,因为分桶是根据分桶字段和数量进行hash取余,也可以自己分桶后导入。

hive> set hive.enforce.bucketing;
hive.enforce.bucketing=false hive> set hive.enforce.bucketing=true; hive> set hive.enforce.bucketing;
hive.enforce.bucketing=true

2.2、建立分桶表

hive> create table bucket_userinfo(userid int,username string) clustered by (userid) sorted by (userid asc) into 2 buckets row format delimited fields terminated by ",";

hive> desc formatted bucket_userinfo;
OK
# col_name data_type comment
userid int
username string # Detailed Table Information
Database: busdata
OwnerType: USER
Owner: hadoop
CreateTime: Wed Mar 06 23:11:37 CST 2019
LastAccessTime: UNKNOWN
Retention: 0
Location: hdfs://bigdata-senior01.home.com:9000/hive/warehouse/busdata.db/bucket_userinfo
Table Type: MANAGED_TABLE
Table Parameters:
COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\",\"COLUMN_STATS\":{\"userid\":\"true\",\"username\":\"true\"}}
SORTBUCKETCOLSPREFIX TRUE
bucketing_version 2
numFiles 0
numRows 0
rawDataSize 0
totalSize 0
transient_lastDdlTime 1551885097 # Storage Information
SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
InputFormat: org.apache.hadoop.mapred.TextInputFormat
OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
Compressed: No
Num Buckets: 2
Bucket Columns: [userid]
Sort Columns: [Order(col:userid, order:1)]
Storage Desc Params:
field.delim ,
serialization.format ,
Time taken: 0.379 seconds, Fetched: 34 row(s)

2.3、使用hive自动分桶,这种情况是针对源数据已经导入hive。

hive> insert overwrite table bucket_userinfo select userid,username from userinfo;

然后hive启动作业分桶导入数据,本例中分两个桶,所以最终会根据userid的奇偶生成两个文件。
hive> dfs -ls /hive/warehouse/busdata.db/bucket_userinfo;
Found 2 items
-rw-r--r-- 1 hadoop supergroup 106 2019-03-06 23:13 /hive/warehouse/busdata.db/bucket_userinfo/000000_0
-rw-r--r-- 1 hadoop supergroup 103 2019-03-06 23:13 /hive/warehouse/busdata.db/bucket_userinfo/000001_0
hive> dfs -cat /hive/warehouse/busdata.db/bucket_userinfo/000000_0;
2,xu.dm
4,user123
6,user2
8,user4
10,user6
14,user8
16,user10
18,user12
20,user14
22,soldier2
24,soldier4
hive> dfs -cat /hive/warehouse/busdata.db/bucket_userinfo/000001_0;
1,admin
3,myuser
5,user1
7,user3
9,user5
13,user7
15,user9
17,user11
19,user13
21,soldier1
23,soldier3
hive> select * from bucket_userinfo;
OK
2 xu.dm
4 user123
6 user2
8 user4
10 user6
14 user8
16 user10
18 user12
20 user14
22 soldier2
24 soldier4
1 admin
3 myuser
5 user1
7 user3
9 user5
13 user7
15 user9
17 user11
19 user13
21 soldier1
23 soldier3
Time taken: 0.238 seconds, Fetched: 22 row(s)

2.4、从外部文件导入数据,结果与上面一样

hive> create table bucket_userinfo2(userid int,username string) clustered by (userid) sorted by (userid) into 2 buckets row format delimited fields terminated by ",";
hive> load data local inpath '/home/hadoop/userinfo2.txt' into table bucket_userinfo2;
hive> select * from bucket_userinfo2;
OK
2 xu.dm
4 user123
6 user2
8 user4
10 user6
14 user8
16 user10
18 user12
20 user14
22 soldier2
24 soldier4
1 admin
3 myuser
5 user1
7 user3
9 user5
13 user7
15 user9
17 user11
19 user13
21 soldier1
23 soldier3
hive>dfs -ls /hive/warehouse/busdata.db/bucket_userinfo2;
Found 2 items
-rw-r--r-- 1 hadoop supergroup 106 2019-03-07 22:44 /hive/warehouse/busdata.db/bucket_userinfo2/000000_0
-rw-r--r-- 1 hadoop supergroup 103 2019-03-07 22:44 /hive/warehouse/busdata.db/bucket_userinfo2/000001_0

2.4、对桶数据采样

hive> select * from bucket_userinfo tablesample(bucket 1 out of 2 on userid);
OK
2 xu.dm
6 user2
10 user6
20 user14
3 myuser
7 user3
17 user11
19 user13
21 soldier1
Time taken: 0.077 seconds, Fetched: 9 row(s)

hive 分区表和分桶表的更多相关文章

  1. Hive 学习之路(五)—— Hive 分区表和分桶表

    一.分区表 1.1 概念 Hive中的表对应为HDFS上的指定目录,在查询数据时候,默认会对全表进行扫描,这样时间和性能的消耗都非常大. 分区为HDFS上表目录的子目录,数据按照分区存储在子目录中.如 ...

  2. Hive 系列(五)—— Hive 分区表和分桶表

    一.分区表 1.1 概念 Hive 中的表对应为 HDFS 上的指定目录,在查询数据时候,默认会对全表进行扫描,这样时间和性能的消耗都非常大. 分区为 HDFS 上表目录的子目录,数据按照分区存储在子 ...

  3. 入门大数据---Hive分区表和分桶表

    一.分区表 1.1 概念 Hive 中的表对应为 HDFS 上的指定目录,在查询数据时候,默认会对全表进行扫描,这样时间和性能的消耗都非常大. 分区为 HDFS 上表目录的子目录,数据按照分区存储在子 ...

  4. 一起学Hive——创建内部表、外部表、分区表和分桶表及导入数据

    Hive本身并不存储数据,而是将数据存储在Hadoop的HDFS中,表名对应HDFS中的目录/文件.根据数据的不同存储方式,将Hive表分为外部表.内部表.分区表和分桶表四种数据模型.每种数据模型各有 ...

  5. Hive 教程(四)-分区表与分桶表

    在 hive 中分区表是很常用的,分桶表可能没那么常用,本文主讲分区表. 概念 分区表 在 hive 中,表是可以分区的,hive 表的每个区其实是对应 hdfs 上的一个文件夹: 可以通过多层文件夹 ...

  6. Hive SQL之分区表与分桶表

    Hive sql是Hive 用户使用Hive的主要工具.Hive SQL是类似于ANSI SQL标准的SQL语言,但是两者有不完全相同.Hive SQL和Mysql的SQL方言最为接近,但是两者之间也 ...

  7. Hive(六)【分区表、分桶表】

    目录 一.分区表 1.本质 2.创建分区表 3.加载数据到分区表 4.查看分区 5.增加分区 6.删除分区 7.二级分区 8.分区表和元数据对应得三种方式 9.动态分区 二.分桶表 1.创建分桶表 2 ...

  8. 第2节 hive基本操作:11、hive当中的分桶表以及修改表删除表数据加载数据导出等

    分桶表 将数据按照指定的字段进行分成多个桶中去,说白了就是将数据按照字段进行划分,可以将数据按照字段划分到多个文件当中去 开启hive的桶表功能 set hive.enforce.bucketing= ...

  9. Hive分区表与分桶

    分区表 在Hive Select查询中.通常会扫描整个表内容,会消耗非常多时间做不是必需的工作. 分区表指的是在创建表时,指定partition的分区空间. 分区语法 create table tab ...

随机推荐

  1. idea 从javadoc中复制内容出来

    打开 tool window就行了 经验:百度google不到的东西太多了,要学会自己想办法,至少也要把功能都试一遍吧, 而且像这种东西官方一般会给方法实现你的目的,只不过有时候是把功能迁移了或者整合 ...

  2. 前端--javaScript之简单介绍

    一.javaScript(以下简称js)的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名ScriptEase.(客户端 ...

  3. linux源码学习-for_each_cpu

    刚开始读linux源码,第一眼就看到了这个很有意思的函数族,周末好好研究一下 3.13 这个组都是宏定义for循环,分析的时候注意到cpumask_next(),它在一个文件中定义了两次,还不是重载, ...

  4. 华为笔试——C++进制转换

    题目:2-62进制转换 题目介绍:输入一个n1 进制的整数(包括负数),将其转换成n2 进制,其中n1 .n2 的范围是 [ 2,62 ] .每个数字的范围是0-9.a-z.A-Z.不用考虑非法输入. ...

  5. 获取label标签内for的属性值-js

    <body> <div class="row_2" id="ass"> <label for="aaa"> ...

  6. Sublime Text 3高效实用快捷键

    2017-11-27 16:18:48 Sublime Text 3 高效实用快捷键 Sublime Text 3 软件及注册码 官网下载链接在这里,有时候会很神奇的上不去,可能是因为被Q了,可能就是 ...

  7. sqlserver-查阻塞

    模拟阻塞: 打开两个窗口:     窗口一: BEGIN TRANSACTION--开始事务 --等待1分钟 WAITFOR DELAY '00:1'; 窗口二: 查询阻塞:(当前被阻塞的进程id,不 ...

  8. java 数据存储

    简单的记录一下而已. 1.寄存器: 特点:快,存储有限. 存储地点:处理器内部. 2.堆栈 特点:仅次于寄存器快,通过堆栈指针在处理器获取支持.堆栈指针下移,分配内存,上移,释放内存.此外须知生命周期 ...

  9. AngularJS学习之数据绑定

    既然AngularJS是以数据作为驱动的MVC框架,在上一篇文章中,也介绍了AngularJS如何实现MVC模式的,所有模型里面的数据,都必须经过控制器,才能展示到视图中. 什么是数据绑定 首先来回忆 ...

  10. Linux学习——操作文件与目录

    1. ls:列出文件及目录信息. 命令格式:ls [选项] ... 常用选项: -a 显示指定目录下所有子目录与文件,包括隐藏文件. -A 显示指定目录下所有子目录与文件,包括隐藏文件.但不列出“.” ...