20180904期 Hive数据模型-桶表

1、概述apache

一、桶表是对数据进行哈希取值,而后放到不一样文件中存储。ide

二、数据加载到桶表时,会对字段取hash值,而后与桶的数量取模。把数据放到对应的文件中。oop

三、物理上,每一个桶就是表(或分区)目录里的一个文件,一个做业产生的桶(输出文件)和reduce任务个数相同。spa

四、桶表专门用于抽样查询,是很专业性的,不是平常用来存储数据的表,须要抽样查询时,才建立和使用桶表。code

2、建立桶表orm

这里按照ename来建立桶表,分五个Bucketserver

hive> create table emp_bucket(hadoop

   > empno int,string

   > ename string,hash

   > job string,

   > mgr int,

   > hiredate string,

   > salary float,

   > comm float,

   > deptno int

   > )

   > CLUSTERED  by (ename) into 5 buckets

   > row format delimited fields terminated by ',';

OK

Time taken: 2.856 seconds

3、往桶表中插入数据

特别注意:执行数据插入前,须要设置如下参数

set hive.enforce.bucketing=true;

这里将emp表中的数据插入emp_bucket表

hive> insert into table emp_bucket select * from emp;

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.MoveTask

MapReduce Jobs Launched:

Job 0: Map: 1   Cumulative CPU: 0.67 sec   HDFS Read: 1438 HDFS Write: 1313 SUCCESS

Total MapReduce CPU Time Spent: 670 msec

hive> select * from emp_bucket;

OK

7369    SMITH   CLERK   7902    1980/12/17      800.0   NULL    20

7499    ALLEN   SALESMAN        7698    1981/2/20       1600.0  300.0   30

7521    WARD    SALESMAN        7698    1981/2/22       1250.0  500.0   30

7566    JONES   MANAGER 7839    1981/4/2        2975.0  NULL    20

7654    MARTIN  SALESMAN        7698    1981/9/28       1250.0  1400.0  30

7698    BLAKE   MANAGER 7839    1981/5/1        2850.0  NULL    30

7782    CLARK   MANAGER 7839    1981/6/9        2450.0  NULL    10

7788    SCOTT   ANALYST 7566    1987/4/19       3000.0  NULL    20

7839    KING    PRESIDENT       NULL    1981/11/17      5000.0  NULL    10

7844    TURNER  SALESMAN        7698    1981/9/8        1500.0  0.0     30

4、查看桶表在HDFS中的存放形式

[root@hadoop-server01 ~]# hdfs dfs -ls /user/hive/warehouse/emp_bucket/

-rw-r--r--   1 root supergroup         92 2018-08-16 20:06 /user/hive/warehouse/emp_bucket/000000_0

-rw-r--r--   1 root supergroup        189 2018-08-16 20:06 /user/hive/warehouse/emp_bucket/000001_0

-rw-r--r--   1 root supergroup        378 2018-08-16 20:06 /user/hive/warehouse/emp_bucket/000002_0

-rw-r--r--   1 root supergroup        282 2018-08-16 20:06 /user/hive/warehouse/emp_bucket/000003_0

-rw-r--r--   1 root supergroup        372 2018-08-16 20:06 /user/hive/warehouse/emp_bucket/000004_0

能够看出,桶表生成的数据为5各个文件,一个桶表对应一个文件,相同Hash值会存放到同一个桶

相关文章
相关标签/搜索