Hive DDL操作
DDL(Data Definition Language)
create,delete,alter
Hive數據抽象/結構
database(HDFS一個目錄)->table(HDFS一個目錄)->partition分區表(HDFS一個目錄)->bucket桶(HDFS一個文件)
數據庫操作
CREATE 創建數據庫
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;;
如果想知道我們剛創建的hive庫存放在哪里,應該去對應的mysql中查看:
去HDFS中查看對應的位置:
刪除數據庫
DROP database hive;
如果這個庫中存在表,那么上面的語句會顯示無法刪除數據庫。如果要刪除表需要執行:
drop database hive CASCADE級聯刪除表,但是一定要慎用
創建數據庫時修改HDFS存儲路徑
CREATE DATABASE IF NOT EXISTS hive2 LOCATION '/test/location';將創建一個數據庫位于/test/location
首先確認在HDFS中對應的路徑是否存在,方便我們驗證:
然后執行創建語句:
然后在HDFS中查看:
查看數據庫的信息
使用命令desc database hive
創建數據庫時添加屬性
CREATE DATABASE IF NOT EXISTS hive3 WITH DBPROPERTIES('creator'='vincent');
查看詳細數據庫信息:
顯示當前正在操作的數據庫
select current_database();可以顯示當前正在使用的數據庫。
在hive中set KEY表示獲取到這個KEY的值,set KEY=VALUE表示設置這個KEY的值。
正則匹配數據庫
表操作
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 [column_constraint_specification] [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)create 創建表
創建一張表:
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';Hive加載csv文件數據時跳過第一行
在創建表時添加tblproperties(“skip.header.line.count”=”1”);到后面。
create table sales (transactionId int, customerId int, itemId int, amountPaid int) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' tblproperties("skip.header.line.count"="1");查看表信息以及詳細信息
這種方式不方便查看,常用的方式是desc formatted emp:
導入數據
LOAD DATA LOCAL INPATH '/home/' OVERWRITE INTO TABLE emp;導入本地的一個文件
表數據在HDFS中查看
進一步查看HDFS的文件內容:
跟本地的數據內容是一樣的。
修改表名
ALTER TABLE emp rename to emp2;查看HDFS中的數據:
總結
以上是生活随笔為你收集整理的Hive DDL操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hive概述
- 下一篇: Hive DML操作