Hive的使用

本文详细介绍了Hive的使用,包括启动步骤、数据库和表的操作,如创建、查看、修改和删除。还涵盖了数据加载、导出以及查询语法,例如SELECT、JOIN等。此外,讨论了内部表与外部表的区别,并提供了实例来说明各种操作。
摘要由CSDN通过智能技术生成

Hive的使用

先启动hive,start-dfs.sh,start-yarn.sh

常用命令

1、执行hql命令的几种方式
(1)进入hive终端。
(2)不进入终端,hive –e “hql命令”,适合短命令的执行。
(3)不进入终端,hive –f *.hql,命令存放在hql文件中,适合执行复杂或多条命令。
2、数据库操作
下面操作有时在mysql下,有时在hive下,有时在centos终端下,为了方便操作,可以在xshell下同时打开三个窗口。
(1)创建数据库:

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

(2)显示所有数据库:show databases [ like “**”];
(3)hive数据库元数据信息存在于mysql数据库中,可以登录mysql查看:
数据库是我们前面设置的:hadoop_hive,表是DBS
(先通过use hadoop_hive切换到hadoop_hive)
从表中可以知道hive数据库hive1存放在hdfs的位置,查看一下,目前为空。
(4)查看数据库信息也可以用

desc database [extended] dbName

(6)
切换当前数据库:use dbName;
默认提示符不显示当前数据库,可以通过设置让它显示出来。set hive.cli.print.current.db=true;
上述方法只对当前会话有效,如果永久有效,可以在hive-site.xml中增加如下配置:

<property>
    <name>hive.cli.print.current.db</name>
    <value>true</value>
  </property>

(7)删除数据库drop database dbName;
(数据库是空的才可以,要级联删除最后加CASCADE)
3、表操作
(1)创建表
格式一:直接建表
完整格式:

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name    -- (Note: TEMPORARY available in Hive 0.14.0 and later)
  [(col_name data_type [COMMENT col_comment], ... [constraint_specification])]
  [COMMENT table_comment]
  [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
  [CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]
  [SKEWED BY (col_name, col_name, ...)                  -- (Note: Available in Hive 0.10.0 and later)]
     ON ((col_value, col_value, ...), (col_value, col_value, ...), ...)
     [STORED AS DIRECTORIES]
  [
   [ROW FORMAT row_format] 
   [STORED AS file_format]
     | STORED BY 'storage.handler.class.name' [WITH SERDEPROPERTIES (...)]  -- (Note: Available in Hive 0.6.0 and later)
  ]
  [LOCATION hdfs_path]
  [TBLPROPERTIES (property_name=property_value, ...)]   -- (Note: Available in Hive 0.6.0 and later)
  [AS select_statement];   -- (Note: Available in Hive 0.5.0 and later; not supported for external tables)

(内部表和外部表(加EXTERNAL)的区别:
内部表创建通常分创建表和加载数据两步;
外部表在创建表时就指定数据所在位置;
删除内部表会直接删除元数据(metadata)及存储数据;删除外部表仅仅会删除元数据,HDFS上的文件并不会被删除;

举例:创建雇员表emp(在hive1下),字段含义为:雇员编号,名字,岗位,经理编号,雇佣日期,薪水,津贴,部门编号。

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

(2)查看表结构
describe 表名,查看详细的在命令后加formatted或extended
(3)修改表alter table
例如重命名:alter table emp rename to emp2;
(4)删除表 drop table 表名
(5)加载数据
格式1:

LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]
LOCAL:本地系统,如果没有local那么就是指的HDFS的路径
OVERWRITE:是否数据覆盖,如果没有那么就是数据追加

格式2:用查询结果创建一个表

 Create table emp1  as select * from emp;

(6)导出数据

```sql
INSERT OVERWRITE LOCAL DIRECTORY '/home/hadoop/hivedaochu'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
select empno,ename,sal,deptno from emp;

11、查询
(1)查询emp中所有数据:select * from emp
(2) select empno,ename from emp;
(3) 显示前3条:select empno,ename from emp limit 3;
(4)查询部门号为20的记录:select * from emp where deptno=20
(5)统计函数(count,max,min,sum,avg)
(6)分组(group by)
(7)连接查询

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值