马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
内部表(Table)内部表与数据库中的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 对应数据库中的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';桶表(Bucket Table) 降低系统的热块,提高查询的速度 桶表是对数据进行哈希取值,然后放到不同的文件中 创建桶表CREATE TABLE bucket_table( sid int, sname string, age int)CLUSTERED BY(sname) INTO 5 BUCKETS;视图(View)视图是一种虚表,是一个逻辑概念;可以跨越多张表 视图建立在已有表的基础之上,视图赖以建立的这些表称为基表 视图可以简化复杂的查询 创建视图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;
|