Hive 中所有的数据都存储在 HDFS 中,Hive 中包含以下数据模型:
-
Table:
-
External Table:
-
Partition:
-
Bucket:
(1)表table:一个表就是hdfs中的一个目录
内部表:默认设置,数据目录由hive默认设置,可以修改。hadoop->hive时,数据会迁移目录。hive删除会级联删除hadoop物理数据。
外部表:元数据删除时不删除物理数据,不迁移数据目录。
(2)区Partition:表内的一个区就是表的目录下的一个子目录:
建表语句语法区分
查询时需要指定分区字段,提升效率。
(3)桶Bucket:如果有分区,那么桶就是区下的一个单位,如果表内没有区,那么桶直接就是表下的单位,桶一般是文件的形式。
按字段hash计算,数据分组,抽样运算时用的较多。 -
DDL
-
DML
示例代码
CREATE DATABASE IF NOT EXISTS shopping COMMENT 'stores all shopping basket data' LOCATION '/user/retail/hive/SHOPPING.db'
WITH DBPROPERTIES ('purpose' = 'testing');
ALTER DATABASE shopping SET DBPROPERTIES ('department' = 'SALES');
DROP DATABASE database_name [RESTRICT|CASCADE];
SHOW DATABASES [ LIKE 'identifier_with_wildcards' ];
SHOW TABLES IN retail;
CREATE TEMPORARY TABLE states (state STRING);
ALTER TABLE states RENAME TO states_old;
ALTER TABLE states CONCATENATE;
ALTER TABLE ids ADD PARTITION (datestamp='2016-05-30') location '/user/demo/ids/2016-05-30';
MSCK REPAIR TABLE ids_internal;
ALTER TABLE RETAIL.TRANSACTIONS ADD COLUMNS (loyalty_card boolean);
ALTER TABLE transactions ENABLE NO_DROP;
ALTER TABLE transactions ENABLE OFFLINE;
CREATE TABLE transactions_test LIKE transactions;
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename
INSERT [OVERWRITE] TABLE tablename1 [IF NOT EXISTS]
SELECT select_fields FROM from_statement;
INSERT OVERWRITE DIRECTORY 'exampleoutput' ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
SELECT persid, firstname, lastname FROM person;
CREATE TABLE blank_tablename LIKE tablename;
variance()
percentile_approx()
select login_account,max(user_id) from tb_user group by login_account;
-
存储格式
-
压缩支持
-
支持的数据类型(https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types)
-
DDL注意实现