数据仓库工具 hive 的初级入门

Posted 小肉丸子的小当家

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据仓库工具 hive 的初级入门相关的知识,希望对你有一定的参考价值。

当前浏览器不支持播放音乐或语音,请在微信或其他浏览器中播放 数据仓库工具 hive 的初级入门

    hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

数据仓库工具 hive 的初级入门


    数据库基本功能也就是增删查改,其他的功能都可以视为扩展功能。将hive安装到linux系统后,进入解压后的文件夹执行以下操作。

    


0:使用数据库

bin/hive  可以直接进入hive命令界面。如图

数据仓库工具 hive 的初级入门

若不想进入命令界面,而在外部进行操作,则可以执行以下操作:

(1)bin/hive -e 'select * from default.student;

(2)或是在文件./datas/hivef.sql中写入sql 语句

    然后执行 bin/hive -f ../datas/hivef.sql

(3)bin/hive -f ../datas/hivef.sql > /software/datas/hivef-res.txt  (执行了并    将执行结果写入文件hive-res.txt)


以下操作均在hive界面进行


1:查看所有数据库

show databases ;

数据仓库工具 hive 的初级入门


2:使用数据库

use default;



3:查看数据库中所有表

show tables ;

数据仓库工具 hive 的初级入门

看表信息

desc student;

数据仓库工具 hive 的初级入门

desc extended student;(详细信息,但格式太乱,不建议使用)

desc formatted  student;(很清晰)

数据仓库工具 hive 的初级入门

数据仓库工具 hive 的初级入门

不仅有表格信息,还有存储信息等,非常详尽。


4;创建表

create table student(

id int, 

name string

)

 ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

以上创建了一张只有属性id 和name的表,最后定义了加载数据时,数据的分割方式,是以符号tab来分割的。



5:从文件中加载表中数据

load data local inpath '/opt/datas/student.txt'into table student ;

数据仓库工具 hive 的初级入门


6.查找

select * from student ;

select id from student ;

正确的结果为:

数据仓库工具 hive 的初级入门

若是报错:

数据仓库工具 hive 的初级入门

关闭hadoop安全模式,如下

数据仓库工具 hive 的初级入门

若报错:

数据仓库工具 hive 的初级入门

检查datanode是否健在,若是挂掉了,重新启动。


7.使用特定函数

select id, upper(name) from default.student; (将name转化为大写)

以上命令使用了函数,默认执行mapreduce。

数据仓库工具 hive 的初级入门

另外还有如下操作:

max/min/count/sum/avg  (show function 可以查看hive自带的函数,

desc functionextented max;可以查看怎么使用某函数)

select max(sal) max_sal from emp;

select sum(sal) from emp;

还可以自己编写python脚本啊!骚操作!


8.数据的导出

方式1

insert overwrite local directory '/software/datas/hive_exp'

ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'

COLLECTION ITEMS TERMINATED BY '\n'

select * from default.emp;

方式2

bin/hive -e "select * from default.emp ;" > /software/datas/exp_res.txt

方式3:将保存在hdfs 中的结果保存到本地。

在hadoop下 :bin/hdfs dfs -get /user/lemon/hive/hive_exp/00000_0

方式4: sqoop(本文未涉及)

hdfs/hive -> rdbms

rdbms -> hdfs/hive/hbase



9.分组(group by)

需求1:每个部门的平均工资

select   t.deptno ,avg(t.sal) avg_sal from emp t group by t.deptno;

having

select deptno,avg(sal)avg_sal from emp group by deptno having avg_sal > 2000;



10.join(链接两个 表)

select * from emp e  join dept d on

e.deptno=d.deptno;

left join 和right join(以右表为准,左边为空则为空)  full join 全链接



11.分区表

create EXTERNAL table IF NOT EXISTS default.emp_part

(

empno int ,

ename string,

job string,

)

partitioned by (month string)

ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

load data local inpath '/software/datas/emp.txt'into table emp_part  partition (month='201509');

select * from emp_part where month='201509';



12.删除表

drop table if exists default.dept_like_rename;


好啦!简单介绍就到这里咯~~~


所以大数据薪资高是有原因的TAT~




以上是关于数据仓库工具 hive 的初级入门的主要内容,如果未能解决你的问题,请参考以下文章

大数据仓库Hive实战视频教程-HIVE完美入门学习视频教程 HIVE教程 HIVE从入门到精通

Hive快速入门

大数据大数据仓库Hive从入门到精通视频教程

数据仓库 Hive 从入门到小牛

Hive入门知识

hive入门什么是hive