hive基础-数据模型

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注意实现

上一篇:理解Promise原理


下一篇:3.2.1 Toy problems 8-puzzle problem