【云计算】HIVE表的使用教程
小标 2018-12-13 来源 : 阅读 1120 评论 0

摘要:本文主要向大家介绍了【云计算】HIVE表的使用教程,通过具体的内容向大家展现,希望对大家学习云计算有所帮助。

本文主要向大家介绍了【云计算】HIVE表的使用教程,通过具体的内容向大家展现,希望对大家学习云计算有所帮助。


1.官网链接


2.创建表和数据库


注[]表示可有可无1.


create table if not exists db_name.table( 数据库名.表名


ip string COMMENT 'remote ip addr', 这里的comment是对列的注释


user string


)


COMMENT 'logs' 这里是对表的注释


ROW FORMAT DELIMITED FIELDS TERMINATED BY char 每行数据通过什么样的char分隔


STORED AS TEXTFILE 存储类型 默认是textfile 官网还有别的类型


LOCATION '' 表的位置


详细参数官网都有,不想赘述。


写一下as和like的用法,其实和以前的SQL语句也是一样的哇


2.也就是分表的概念


create table if not exists db_name.table


as


select .... ;将查询结果结构和数据作为一个新表。


3.


create table if not exists db_name.table


like


exists_tablename or view name ;复制结构


4.关于外部表


通常创建外部表的时候,会指定location也就是位置。


先创建目录dfs -mkdir -p '/user/wsm/hive/warehouse/dept' ;


create external table dept(


deptno int,


dname string,


loc string


)


row format delimited fields terminated by '\t'


location '/user/wsm/hive/warehouse/dept';


desc formatteddefault.dept;


可以看到表的类型是external table


直接把文件数据传到hdfs上面


dfs -put /root/hive_datas/dept.txt /user/wsm/hive/warehouse/dept ;


关于内部表和外部表的区别:


删除外部表之前:



 


 


删除外部表之后,路径和文件仍然存在。只会删除表的元数据,不会删除表的数据


 



 


 


删除内部表之后,可以看到dept的文件夹不存在了,表数据和元数据都被删除了。


 



 


 


5.分区表


hive中的分区其实就是分目录,根据业务需要,把一个大的数据集分割成更小的数据集。


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


创建分区表


create table dept_part(


deptno int,


dname string,


loc string


)


partitioned by(month string)


row format delimited fields terminated by '\t';


添加数据到分区


load data local inpath'/root/hive_datas/dept.txt' into table db_hive.dept_part partition(month='201809');


在50070页面上会看到表多了一个月份的目录,数据文件就在里面


 



 


 


查询分区里面的数据


select * from dept_part where month='201809';


分区表连接查询


1.再加载2018年10月的数据


load data local inpath'/root/hive_datas/dept.txt' into table db_hive.dept_part partition(month='201810') ;


2.连接查询


这里我还有点问题,记录在问题博客里面,解决了会把正确的代码添上。


6.二级分区表


create table dept_part2(


deptno int,


dname string,


loc string


)


partitioned by(month string,day string)


row format delimited fields terminated by '\t';


从本地加载数据到分区表


load data local inpath'/root/hive_datas/dept.txt' into table db_hive.dept_part2 partition(month='201809',day='13') ;


查询


select * from dept_part2 where month='201809' and day='13' ;


查看表的分区:


show partitions tableName;


6.关于数据库


CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name


[COMMENT database_comment]


[LOCATION hdfs_path] 存储在hdfs上的位置 创建表时会自动创建该路径


[WITH DBPROPERTIES (property_name=property_value, ...)];


2.实例 oracle中的员工表和部门表


员工表


create table emp(


empno int ,


ename string,


job string ,


mgr int,


hiredate string,


sal double,


comm double ,


deptno int


)


row format delimited fields terminated by '\t';


部门表


create table dept(


deptno int,


dname string,


loc string


)


row format delimited fields terminated by '\t';


加载数据,在Windows里面讲文件另存为UTF-8


load data local inpath '/root/hive_datas/dept.txt' [overwrite] into table db_hive.dept;


load data local inpath '/root/hive_datas/emp.txt' into table db_hive.emp;


overwrite 覆盖原来的数据


创建子表 数据为dept表的dname和loc


create table db_hive.dept_cats


as


select dname,loc from dept ;


清除表的数据


truncate table dept_cats;


删除表


drop table if exists dept_cats ;


创建一个与dept表结构相同的表


create table dept_likes


like


dept;


修改表的名称 (通常hive不会修改列)


alter table dept_likes rename to dept_like ;


关于分区表的一些注意事项


1.创建一个非分区表 ,通过dfs -put的方式将文件上传到表的路径中, 可以查看到数据。如果是分区表,先-mkdir -p创建分区的目录(建表的时候之会创建到表名的路径,分区的路径需要自己手动创建,然后将文件数据put进去),最后select查询不到数据。解决方式一:msck repair table tableName;解决方式二:alter table tablename add partition()。


3.数据类型


          

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标大数据云计算大数据安全频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved