hive、sqoop安装配置
Hive
hive体系架构
提前安装好MySQL
下载hive压缩包
解压缩
tar -zxvf xx.tar.gz
配置环境变量
export HIVE_HOME=“hive的目录”
export PATH=$HIVE_HOME/bin:$PATH
hive-site.xml
进入/soft/hive/conf目录,新建hive-site.xml,添加以下配置
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property>
<property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://192.168.17.131:3306/hive?createDatabaseIfNotExist=true</value> </property>
<property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property>
<property> <name>javax.jdo.option.ConnectionPassword</name> <value>123456</value> </property> </configuration> |
hive-env.sh
进入/soft/hive/conf目录,新建hive-env..xml,添加以下配置
export HADOOP_HOME=/soft/hadoop |
将连接MySQL jar包放入lib目录下
常用语句
建表
create table ***(a int,b string) row format delimited fields terminated by ',';
员工表: create table emp( empno string, ename string, job string, mgr string, hiredate string, sal double, comm double, deptno string )row format delimited fields terminated by '\t' ;
部门表: create table dept( deptno string, dname string, loc string )row format delimited fields terminated by '\t' ;
薪水等级表: create table salgrade( grade int, losal double, hisal double )row format delimited fields terminated by '\t' ;
|
导数据
load data local inpath’路径’ into table **;
修改表中的序列化分隔符:
hive> alter table store set SERDEPROPERTIES('field.delim'='\t');
常用函数
内置
数学函数
round():四舍五入
Ceil 向上取整
Floor:向下取整
Select round(3.562,2) ;
Select ceil(4.3);
字符串函数
Lower select lower(“HelloWorld”),upper(“HelloWorld”);
upper
Length
Select length(“helloworld”);
concat select concat()
Substr select substr(“helloworld”,3);
Trim select trim(“ he llo ”);
Lpad select lpad(“hello”,10,”*”);
rpad
聚合函数
Count Sum Max Min Avg
自定义
表连接查询
查询员工信息:员工号、姓名、月薪、部门名称 select empno,ename,sal,dname from emp join dept on emp.deptno=dept.deptno; 查询员工信息:员工号、姓名、月薪、工资级别 //两个表join的时候,不支持两个表的字段非相等操作。应该改成啥听老师明天讲 select empno,ename,sal,grade from emp join salgrade on sal between losal and hisal; 按部门统计员工人数:部门号、部门名称、人数 //Hive不允许直接访问非group by字段; //对于非group by字段,可以用Hive的collect_set函数收集这些字段,返回一个数组; //使用数字下标,可以直接访问数组中的元素; select collect_set(dept.deptno)[0],dname,count(empno) from emp join dept on emp.deptno=dept.deptno group by dname; 查询员工的姓名和员工的老板姓名 select e2.ename,e1.ename from emp e1 join emp e2 on e1.empno=e2.mgr; |
SQOOP
使用sqoop导入关系型数据库到hive
sqoop.apache.com
sqoop是apache旗下开源的框架,专门做数据的导入导出;
解压tar
设置环境变量
export SQOOP_HOME=/home/spark/sqoop/sqoop-1.4.6
export PATH=$PATH:$SQOOP_HOME/bin
source /etc/profile
验证: sqoop version
cd sqoop_home/bin
mysql驱动放到lib目录下
检测sqoop是否与mysql连接成功
sqoop list-databases --connect jdbc:mysql://192.168.17.131:3306/ --username root --password 123456
输出MySQL中数据库信息表示连接成功