Hive初级使用
一、hive的安装
(暂不支持jdk1.9)
1、 解压到指定目录
2、 配置源数据储存在mysql
vi hive2.2/conf/hive-site.xml
<!--mysql的地址--> <name>javax.jdo.option.ConnectionURL</name> <!--mysql的驱动--> <!--mysql的用户名--> <!--mysql的密码--> |
3、 加mysql的jdbc的jar包到hive/lib
(下载地址:https://dev.mysql.com/downloads/connector/j/)
4、 初始化hive
$HIVE_HOME/bin/schematool -dbType <dbtype> -initSchema
5、 启动hive
$HIVE_HOME/bin/hive
三种不同的启动方式:(1)如上
(2)服务、客户端连接
$ $ HIVE_HOME / bin /hiveserver2
$ $ HIVE_HOME / bin /beeline -u jdbc:hive2:// $ HS2_HOST:$ HS2_PORT
(3)命令行的方式(用于写脚本)
$HIVE_HOME/bin/hive –e ‘your sql’
二、hive的DDL语法(表定义操作)
1、建表语法
2、内部表和外部表的区别
3、从本地/hdfs中导入数据到hive
注:3.3中还可以确定列名称:
createtable t_1_jz
as
select
id asuid,
name asuname,
add asaddress
fromt_1
whereadd=’handong’;
4、 从hive中导出数据到本地/hdfs
5、文件的储存格式
注:hive默认的分隔符为“\001”。
6、添加/删除分区(必须在定义表时创建分区,否则分区添加无效)
7、修改表的列定义以及表名
修改表名:altertable t_1 rename to t_2;
8、显示命令
三、hive的DML语法(表数据操作)
1、插入数据到表中
(1)批量导入:
1)从本地磁盘:load data local inpath ‘file path’into table t_1;
2)从hdfs:load datainpath ‘file path’ into table t_1;
(2)单条导入:
insert into table t_1(cloumn_name1, cloumn_name1) values (“myname”,12);
2、多重插入数据到不同表中
from t_1
insert overwritetable t_2
select * where type=1
insert overwritetable t_3
select * wheretype=2;
注:insert overwrite和insert into的区别在于是否覆盖原数据。
3、select基本语法
4、select的join语法
(1)基本语法:
select a.name b.* fromt_1 a inner join t_2 b where a.id=b.id;
支持:
inner join
left join | left outer join
right join | right outer join
full join | full outer join
left semi join(半连接—--只返回左表的数据)
(2)非等值join
老版本不支持非等值join
新版本(1.2.0以后)支持非等值join,但是语法必须如下:
select a.name b.*from t_1,t_2 b where a.id>b.id;(不加join关键字)
5、自定义函数