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值會存放到同一個桶

相關文章
相關標籤/搜索