HIVE Temporary Table&Constraint(九)

HIVE Temporary Table&Constraint

这两介绍下hive的临时表和表约束。

Temporary Table

创建的临时表仅仅在当前会话是可见的,数据将会被存储在用户的暂存目录中,并在会话结束时被删除。如果创建临时表的名字与当前数据库下的一个非临时表相同,则在这个会话中使用这个表名字时将会使用的临时表,而不是非临时表,用户在这个会话内将不能使用原表,除非删除或者重命名临时表。
临时表有如下限制:

  • 不支持分区字段
  • 不支持创建索引

在Hive1.1.0之后临时表可以存储到memory,ssd或者default中,可以通过配置 hive.exec.temporary.table.storage来实现,存储策略可以参考文献3。
一般使用CREATE TEMPORARY TABLE ….来创建临时表。临时表也支持多种创建操作和insert操作。
CREATE TEMPORARY TABLE ….,CTAS, CTL, INSERT INTO。

Constraints

Hive包含对未经验证的主键和外键约束的支持,一些sql工具在存在约束时会生成更加高效的查询,由于这些限制条件未经验证,上游系统在加载到Hive之前需要确保数据的完整性。
常用的PK( PRIMARY KEY)和FK(FOREIGN KEY)约束使用如下:

CREATE TABLE product 
  ( 
     product_id        INTEGER, 
     product_vendor_id INTEGER, 
Hive中创建表可以使用CREATE TABLE语句,具体语法如下: ``` CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data_type [column_constraint_specification] [COMMENT col_comment], ...)] [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] [ROW FORMAT row_format] [STORED AS file_format] [LOCATION hdfs_path] [TBLPROPERTIES (property_name=property_value, ...)] ``` 其中,方括号内的内容为可选项,具体解释如下: - TEMPORARY:表示创建的是临时表,该表在当前会话结束时会被删除。 - EXTERNAL:表示创建的是外部表,即表的数据存储在Hive之外,例如HDFS上的文件。 - IF NOT EXISTS:表示如果表已经存在,则不会重新创建。 - table_name:表示要创建的表的名称。 - col_name:表示表的列名。 - data_type:表示表的列的数据类型。 - column_constraint_specification:表示列的约束条件,例如NOT NULL、UNIQUE等。 - COMMENT:表示对表或列的注释。 - PARTITIONED BY:表示按照哪些列进行分区。 - CLUSTERED BY:表示按照哪些列进行聚集。 - SORTED BY:表示按照哪些列进行排序。 - INTO num_buckets BUCKETS:表示将表分成多少个桶。 - row_format:表示行的格式,例如DELIMITED、SERDE等。 - file_format:表示文件的格式,例如TEXTFILE、SEQUENCEFILE等。 - hdfs_path:表示表的数据存储路径。 - TBLPROPERTIES:表示表的属性,例如表的压缩方式、表的存储格式等。 例如,创建一个名为test的表,包含id和name两列,数据类型分别为int和string,存储在HDFS的/user/hive/warehouse/test目录下,可以使用以下语句: ``` CREATE TABLE IF NOT EXISTS test ( id INT, name STRING ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE LOCATION '/user/hive/warehouse/test'; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值