1、创建分区表

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

修改表:

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

1.1、加载数据

  1. hive> load data local inpath '/home/hadoop/sampler/w2.csv' into table weather_list partition(createtime='2011-01-01',area='bj');
  2. Loading data to table busdata.weather_list partition (createtime=2011-01-01, area=bj)
  3. OK
  4. Time taken: 1.455 seconds
  5. hive> load data local inpath '/home/hadoop/sampler/w3.csv' into table weather_list partition(createtime='2011-01-02',area='sc');
  6. Loading data to table busdata.weather_list partition (createtime=2011-01-02, area=sc)
  7. OK
  8. Time taken: 1.394 seconds
  9. hive> load data local inpath '/home/hadoop/sampler/w4.csv' into table weather_list partition(createtime='2011-01-03',area='tj');
  10. Loading data to table busdata.weather_list partition (createtime=2011-01-03, area=tj)
  11. OK
  12. Time taken: 1.568 seconds
  13. hive> load data local inpath '/home/hadoop/sampler/w4.csv' into table weather_list partition(createtime='2011-01-04',area='sz');
  14. Loading data to table busdata.weather_list partition (createtime=2011-01-04, area=sz)
  15. OK
  16. Time taken: 1.209 seconds
  17. hive> load data local inpath '/home/hadoop/sampler/w5.csv' into table weather_list partition(createtime='2011-01-05',area='gz');
  18. Loading data to table busdata.weather_list partition (createtime=2011-01-05, area=gz)
  19. OK
  20. Time taken: 1.148 seconds
  21. hive> load data local inpath '/home/hadoop/sampler/w5.csv' into table weather_list partition(createtime='2011-01-01',area='gz');
  22. Loading data to table busdata.weather_list partition (createtime=2011-01-01, area=gz)
  23. OK
  24. Time taken: 1.278 seconds

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

  1. hive> dfs -ls /hive/warehouse/busdata.db/weather_list/createtime=2011-01-01/area=gz;
  2. Found 6 items
  3. -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
  4. -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
  5. -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
  6. -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
  7. -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
  8. -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
  1. hive> dfs -ls /hive/warehouse/busdata.db/weather_list/createtime=2011-01-01;
  2. Found 2 items
  3. drwxr-xr-x - hadoop supergroup 0 2019-03-05 22:09 /hive/warehouse/busdata.db/weather_list/createtime=2011-01-01/area=bj
  4. 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、显示分区信息

  1. hive> show partitions weather_list;
  2. OK
  3. createtime=2010-01-01/area=bj
  4. createtime=2010-01-01/area=sh
  5. createtime=2010-01-01/area=yn
  6. createtime=2010-01-02/area=sh
  7. createtime=2011-01-01/area=bj
  8. createtime=2011-01-01/area=gz
  9. createtime=2011-01-02/area=sc
  10. createtime=2011-01-03/area=tj
  11. createtime=2011-01-04/area=sz
  12. createtime=2011-01-05/area=gz
  13. Time taken: 0.584 seconds, Fetched: 10 row(s)

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

  1. hive> select * from weather_list where area='bj' limit 10;
  2. OK
  3. 1999 71 2010-01-01 bj
  4. 1994 57 2010-01-01 bj
  5. 1995 33 2010-01-01 bj
  6. 1993 44 2010-01-01 bj
  7. 1994 99 2010-01-01 bj
  8. 1994 83 2010-01-01 bj
  9. 1995 59 2010-01-01 bj
  10. 1991 32 2010-01-01 bj
  11. 1992 74 2010-01-01 bj
  12. 2000 56 2010-01-01 bj
  13. Time taken: 2.527 seconds, Fetched: 10 row(s)

2、分桶表

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

  1. hive> set hive.enforce.bucketing;
  2. hive.enforce.bucketing=false
  3.  
  4. hive> set hive.enforce.bucketing=true;
  5.  
  6. hive> set hive.enforce.bucketing;
  7. hive.enforce.bucketing=true

2.2、建立分桶表

  1. 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 ",";
  2.  
  3. hive> desc formatted bucket_userinfo;
  4. OK
  5. # col_name data_type comment
  6. userid int
  7. username string
  8.  
  9. # Detailed Table Information
  10. Database: busdata
  11. OwnerType: USER
  12. Owner: hadoop
  13. CreateTime: Wed Mar 06 23:11:37 CST 2019
  14. LastAccessTime: UNKNOWN
  15. Retention: 0
  16. Location: hdfs://bigdata-senior01.home.com:9000/hive/warehouse/busdata.db/bucket_userinfo
  17. Table Type: MANAGED_TABLE
  18. Table Parameters:
  19. COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\",\"COLUMN_STATS\":{\"userid\":\"true\",\"username\":\"true\"}}
  20. SORTBUCKETCOLSPREFIX TRUE
  21. bucketing_version 2
  22. numFiles 0
  23. numRows 0
  24. rawDataSize 0
  25. totalSize 0
  26. transient_lastDdlTime 1551885097
  27.  
  28. # Storage Information
  29. SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
  30. InputFormat: org.apache.hadoop.mapred.TextInputFormat
  31. OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
  32. Compressed: No
  33. Num Buckets: 2
  34. Bucket Columns: [userid]
  35. Sort Columns: [Order(col:userid, order:1)]
  36. Storage Desc Params:
  37. field.delim ,
  38. serialization.format ,
  39. Time taken: 0.379 seconds, Fetched: 34 row(s)

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

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

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

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

2.4、对桶数据采样

  1. hive> select * from bucket_userinfo tablesample(bucket 1 out of 2 on userid);
  2. OK
  3. 2 xu.dm
  4. 6 user2
  5. 10 user6
  6. 20 user14
  7. 3 myuser
  8. 7 user3
  9. 17 user11
  10. 19 user13
  11. 21 soldier1
  12. 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. Lite OS学习之事件EVENT

    1. Lite OS的事件EVENT,就是一个任务向另外一个任务通知事件的,不能数据传输.看下有的函数,实际比较复杂 2. 具体还是看编程,先全局结构体整个事件变量 /*事件控制结构体*/ EVENT ...

  2. 《Node.js 包教不包会》

    <Node.js 包教不包会> 为何写作此课程 在 CNode(https://cnodejs.org/) 混了那么久,解答了不少 Node.js 初学者们的问题.回头想想,那些问题所需要 ...

  3. Mybatis传递参数的三种方式

    第一种: Dao层使用@Param注解的方法 VersionBox getVersionByVersionNumAndVersionType(@Param("versionNum" ...

  4. 函数parseQuery用于解析url查询参数

    在百度上找的,以后忘了再看. 语法如下: var obj = parseQuery(query) query是被解析的查询参数,函数返回解析后的对象. 使用范例如下: var jerry = pars ...

  5. Google TensorFlow for GPU安装、配置大坑

    Google TensorFlow for GPU安装.配置大坑 从本周一开始(12.05),共4天半的时间,终于折腾好Google TensorFlow for GPU版本,其间跳坑无数,摔得遍体鳞 ...

  6. Saving James Bond - Easy Version (MOOC)

    06-图2 Saving James Bond - Easy Version (25 分) This time let us consider the situation in the movie & ...

  7. List Leaves 树的层序遍历

    3-树2 List Leaves (25 分) Given a tree, you are supposed to list all the leaves in the order of top do ...

  8. 云主机启动提示Booting from Hard Disk GRUB

    版本:Openstack ocata 系统:centos7.3 环境:VMware workstation12 解决方法: 或者

  9. [ Continuously Update ] The Paper List of Seq2Seq Tasks ( including Attention Mechanism )

    Papers Published in 2017 Convolutional Sequence to Sequence Learning - Jonas Gehring et al., CoRR 20 ...

  10. 学习使用Git 版本控制 代码管理

    title: 学习使用Git 版本控制 代码管理 notebook: 经验累积 tags:Git --- Git 版本控制 学习教程 Git版本控制器,可以作为程序员.计算机科学和软件工程的研究人员在 ...