Hive基本操作

发布时间 2023-12-30 18:09:17作者: 田攀攀的博客

  Hive的基本操作很简单,与SQL的写法很类似,总结如下:

    进入Hive环境

        $HIVE_HOME/bin/hive

  数据库操作   

          CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_path] [WITH DBPROPERTIES           (property_name=property_value, ...)];

CREATE DATABASE IF NOT EXISTS hive;

CREATE DATABASE IF NOT EXISTS hive2 LOCATION '/test/location';

CREATE DATABASE IF NOT EXISTS hive3 WITH DBPROPERTIES('creator'='pk');

/user/hive/warehouse是Hive默认的存储在HDFS上的路径

  表操作

    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';

   加载数据到emp表        

  • 追加Linux本地文件里的数据到emp表

        load data local inpath '/home/hadoop/data/emp.txt' into table emp;

  • overwrite覆盖操作,使用Linux本地文件里的数据覆盖掉原来emp表的数据

  load data local inpath '/home/hadoop/data/emp.txt' overwrite into table emp;

  • 将hdfs上某文件里的数据追加到emp表(此操作完毕后,hdfs上的该文件就自动删除)

  load data inpath 'hdfs://hadoop000:8020/data/emp.txt' into table emp;

  • overwrite覆盖操作,使用hdfs上某文件里的数据覆盖掉emp表的数据(此操作完毕后,hdfs上的该文件就自动删除)

    load data inpath 'hdfs://hadoop000:8020/data/emp.txt' overwrite into table emp;

   聚合: max/min/sum/avg

   分组函数: group by 求每个部门的平均工资

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

  join : 多表连接 (emp表与dept表连接) 

  CREATE TABLE dept( deptno int, dname string, loc string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

   LOAD DATA LOCAL INPATH '/home/hadoop/data/dept.txt' OVERWRITE INTO TABLE dept;

   select e.empno,e.ename,e.sal,e.deptno,d.dname from emp e join dept d on e.deptno=d.deptno;