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中数据库信息表示连接成功

 

posted @ 2018-10-09 17:03  发酸的丶牛奶  阅读(990)  评论(0编辑  收藏  举报