内部表与数据库中的Table在概念上是类似的
每一个Table在Hive上都有一个对应的目录存储数据
所有的Table数据(不包括External Table)都保存在这个目录中
删除表时,元数据和数据都会删除
--创建t1表
CREATE TABLE t1(
tid int,
tname string,
age int
);
CREATE TABLE t2(
tid int,
tname string,
age int
)
LOCATION '/mytable/hive/t2';
CREATE TABLE t3(
tid int,
tname string,
age int
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
CREATE TABLE t4
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
AS SELECT * FROM tablename;
使用分区可以提高查询的效率
partition 对应数据库中的Partition列的密集索引
在Hive中,表中的一个Partition对应表下的一个目录,所有的Partition的数据都存储在对应的目录中
CREATE TABLE partition_table(
sid int,
sname string
)PARTITIONED BY (gender string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
INSERT INTO TABLE partition_table partition(gender='M')
SELECT sid,sname FROM table_name WHERE gender='M';
explain SELECT * FROM partition_table WHERE gender='M';
explain SELECT * FROM student1;
指向已经在HDFS中存在的数据,可以创建Partition
它和内部表在元数据的组织是相同的,而实际数据的存储则有较大的差异
外部表只有一个过程,加载数据和创建表同时完成,并不会移动数据到数据仓库的目录中,只是与外部数据建立一个链接。当删除一个外部表时,仅删除该链接。
CREATE EXTERNAL TABLE external_student(
sid int,
sname string,
age int
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION 'hdfs_location';
降低系统的热块,提高查询的速度
桶表是对数据进行哈希取值,然后放到不同的文件中
CREATE TABLE bucket_table(
sid int,
sname string,
age int
)
CLUSTERED BY(sname) INTO 5 BUCKETS;
视图是一种虚表,是一个逻辑概念;可以跨越多张表
视图建立在已有表的基础之上,视图赖以建立的这些表称为基表
视图可以简化复杂的查询
CREATE VIEW onion_referrers(url COMMENT 'URL of Referring page')
COMMENT 'Referrers to The Onion website'
AS
SELECT DISTINCT referrer_url
FROM page_view
WHERE page_url='http://www.theonion.com';
DROP VIEW onion_referrers;
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。