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有些字符需要用“\”进行转义,列如用“.”切割时,得写成“\.”