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有些字符需要用“\”進行轉義,列如用“.”切割時,得寫成“\.”