Hive基础之分区表

2020-07-01 00:00:00 查询 数据 分区 分区表 可以看到

我们在做数据挖掘和分析的时候有时候只是针对某一段时间或者某一个月的数据,而我们在创建表的时候是将所有时间的数据都放在一起,这样就会导致我们在进行分析的时候会分析所有的数据,如果数据量很大的时候效率就会很慢,这时候Hive就提供一种特性叫分区表,可以针对一个月的数据进行查询和分析。原来可能要分析100G的数据文件,经过分区后可能只需要分析10G的文件,这样可以大大提升数据分析的效率。下面我们就来详细看一下hive的分区表。

1.分区表定义

分区表实际上就是对应一个HDFS文件系统上的独立的文件夹,该文件夹下是该分区的所有的数据文件。Hive中的分区就是分目录,把一个大的数据集根据业务需要分割成更小的数据集。这个在企业中会特别有用,尤其是分区表和外部表相结合,应用特别广泛。 在hive中查询时通过WHERE子句中的表达式来选择查询所需要的指定的分区,这样的查询效率会提高很多。 还是以emp表为例,分区表的创建脚本如下:

create EXTERNAL table IF NOT EXISTS default.emp_part(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int
)
partitioned by (month string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' ;
hive (default)> create EXTERNAL table IF NOT EXISTS default.emp_part(
              > empno int,
              > ename string,
              > job string,
              > mgr int,
              > hiredate string,
              > sal double,
              > comm double,
              > deptno int
              > )
              > partitioned by (month string)
              > ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' ;
OK
Time taken: .996 seconds
hive (default)> show tables;
OK
tab_name
dept
dept_cats
emp
emp_ext
emp_ext2
emp_part
Time taken: .171 seconds, Fetched: 6 row(s)

相关文章