Hive学习二

Hive学习二

标签(空格分隔): Hive


一,hive表的三种创建,应用场景以及练习截图
第一种:

CREATE TABLE IF NOT EXISTS studb.studu_log_001(ip string COMMENT 'remote ip address' ,user string ,reqest_url string) COMMENT 'student1' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' ;

第二种:

CREATE TABLE IF NOT EXISTS studb.studu_log_002 LIKE studb.studu_log_001;

第三种:

CREATE TABLE IF NOT EXISTS studb.studu_log_003 AS select ip, reqest_url from studb.studu_log_001;

二,内部表和外部表的区别

内部表称之为managed_table,默认存储在/user/hive/warehouse下,也可以通过location指定,删除表示会删除表数据和元数据。
1, 创建内部表并导入数据,查看表信息和表数据

create table if not exists emp_managed  like emp;
load data local inpath '/opt/datas/emp.txt' into table emp_managed;

001.jpg-48.5kB

2, 删除内部表并查看删除后的相关信息

drop table if exists emp_managed;

004.jpg-41.8kB

外部表称之为external_table,创建表时一般指定目录位置(location),删除表时只会删除元数据不会删除表数据。
1,创建内部表并导入数据,查看表信息和表数据

create external table if not exists emp_external  like emp location '/user/xingyunfei/external';
load data local inpath '/opt/datas/emp.txt' into table emp_external;

2, 删除内部表并查看删除后的相关信息

drop table if exists emp_external;

004.jpg-25.9kB

三,分区表的功能创建,加载数据和查询

分区表实际上对应一个HDFS文件系统上的独立的文件夹,该文件夹下是该分区所有的数据文件。hive中的的分区就是分目录,把一个大的数据集根据业务分割成更小的数据集。在查询时通过where子句中表达式来选择查询所需要的指定的分区,这样的查询效率会提高很多。
1, 一级分区

创建一级分区表

CREATE TABLE IF NOT EXISTS emp_partition(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int) partitioned by (time string) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE ;

加载数据

load data local inpath '/opt/datas/emp.txt' into table emp_partition partition(time='20160308');

查询数据:

select * from emp_partition where time='20160308';

2, 二级分区

创建二级分区表:

CREATE TABLE IF NOT EXISTS emp_partition_month_day(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int) 
partitioned by (month string,day string) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE ;

加载数据:

load data local inpath '/opt/datas/emp.txt' into 
table emp_partition_month_day partition(month='201603',day='01');

查询数据:

select * from emp_partition_month_day where month='201603' and day='01';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

forrestxingyunfei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值