Hive之DDL详解

官网:http://hive.apache.org
在这里插入图片描述

1、Hive的DDL

对于DML语言,我们不讲,因为实际工作Hive1.x版本 DML性能太差,基本是用Spark实现;虽然现在Hive2.x支持Spark引擎,但是使用的人还是比较少。
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL
HiveQL DDL:

  • CREATE DATABASE/SCHEMA, TABLE, VIEW, FUNCTION, INDEX
  • DROP DATABASE/SCHEMA, TABLE, VIEW, INDEX
  • TRUNCATE TABLE
  • ALTER DATABASE/SCHEMA, TABLE, VIEW
  • MSCK REPAIR TABLE (or ALTER TABLE RECOVER PARTITIONS)
  • SHOW DATABASES/SCHEMAS, TABLES, TBLPROPERTIES, VIEWS, PARTITIONS, FUNCTIONS, INDEX[ES], COLUMNS, CREATE TABLE
  • DESCRIBE DATABASE/SCHEMA, TABLE_NAME, VIEW_NAME

数据库操作

CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name  
[COMMENT database_comment]
[LOCATION hdfs_path]
[WITH DBPROPERTIES (property_name=property_value, ...)];  #[]表示可有可无
 
CREATE DATABASE hive; #创建数据库
desc database hive;  #查看数据库存储数据目录信息的等
DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE]; #删除数据库
USE database_name; 使用数据库

数据库元数据查询

mysql -uroot -p  #登录mysql
show databases;
use ruoze_d6
show tablses;
select * from dbs \G  #查看有hive有哪些数据库,\G表示格式化输出

表的操作

#创建员工1信息表,并指定行的格式
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'; 
#加载数据入员工表,local 表示数据从本地获取,未指定则是指hdfs,这是DML语法
LOAD DATA LOCAL INPATH '/home/hadoop/data/emp.txt' OVERWRITE INTO TABLE emp ;
 
#创建员工2拷贝表结构
CREATE TABLE emp2 LIKE emp;
 
#创建员工3拷贝表结构以及表数据,需要跑MR
create table emp3 as select * from emp;
 
 
#创建外部表,用external修饰,其它语法与内部表一致
create external table emp4 like emp;
 
#查看表的结构
desc emp; #查看表的简单信息
desc formatted emp; #查看表的详细信息
drop table emp2 #删除表
alter table emp rename to new_emp; #重名了表

我们可以通过 hive -e “sql 命令”来执行,可以写在shell脚本里面,然后执行shell脚本。
或者是通过 hive -f SQL文件(文件里面就是SQL语句) 这种方式来编写脚本的。

hive sql有些字符需要用“\”进行转义,列如用“.”切割时,得写成“\.”

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章