码迷,mamicode.com
首页 > 其他好文 > 详细

Hive- 表

时间:2017-10-25 23:47:21      阅读:325      评论:0      收藏:0      [点我收藏+]

标签:direct   bsp   自己   logs   数据   string   res   注意   and   

在hive中表的类型:管理表和托管表(外部表)。

内部表也称之为MANAGER_TABLE,默认存储在/user/hive/warehouse下,也可以通过location指定;删除表时,会删除表的数据以及元数据;

外部表称之为EXTERNAL_TABLE。在创建表时可以自己指定目录位置(LOCATION),数据存储所在的目录;删除表时,只会删除元数据不会删除表数据;

创建外部表实例

create external table if not exists default.emp_ext(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int
) 
row format delimited fields terminated by \t
location /opt/input/emp;

分区表实际上就是对应一个HDFS文件系统上的独立的文件夹,该文件夹下是该分区所以的数据文件。hive中的分区就是分目录,把一个大的数据集根据业务需要分割成更小的数据集。

 

在查询时通过WHERE子句中的表达来选择所需要的指定的分区,这样的查询效率会提高很多。

 

create external table if not exists default.emp_partition(
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;

分区表注意事项:

修复表:msck repair table table_name;

可以写shell脚本

dfs -mkdir -p /user/hive/warehouse/dept_part/day=20171025;
dfs -put /opt/weblog/log.log /user/hive/warehouse/dept_part/day=20171025;

alter table dept_part and partition(day=20171025);

查看表的分区数:show partitions dept_part;

导入数据进入hive表

load data [local] inpath ‘filepath‘ [overwrite] into table tablename into tablename [partition (partcol1=val,...)];

参数带local意思是本地文件,不带就是HDFS文件

参数带overwrite意思是覆盖原本文件的内容,不带就追加内容

分区表加载,特殊性partition (partcol1=val,...)

1.加载本地文件到hive表

load  data  local  inpath /root/emp.txt into  table  default.emp

2.加载hdfs文件到hive表中

load  data  inpath /root/emp.txt into  table  default.emp

3.加载数据覆盖表中已有的数据

load  data  inpath /root/emp.txt overwrite into  table  default.emp

4.创建表是通过insert加载

create table    default.emp_ci like emp;
insert into table default.emp_ci select *from default.emp;

5.创建表的时候通过指定location指定加载

 

 

导出hive表数据

 

insert overwrite local directory /opt/datas/hive/hive_exp_emp  select * from default.emp 

row format delimited fields terminated by ‘\t‘; #bin
/hive -e "select * from default.emp;" > /opt/datas/hive/exp_res.txt

 

Hive- 表

标签:direct   bsp   自己   logs   数据   string   res   注意   and   

原文地址:http://www.cnblogs.com/RzCong/p/7732590.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!