欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

hive 标准hql建表语法格式

程序员文章站 2022-07-11 19:14:07
一.标准hql建表语法格式1.官方标准语法:(hql不区分大小写,下面[]里的属性是可选属性) 具体参考官网界面:HIVE官网建表说明文档 二.标准建表语法各项参数说明1.CREATE TABLE 创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;用户可以用 IF NOT EXISTS 选 ......

一.标准hql建表语法格式
1.官方标准语法:(hql不区分大小写,下面[]里的属性是可选属性)

具体参考官网界面:hive官网建表说明文档

  create [external] table [if not exists]     table_name      
  [(col_name   data_type   [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]  


二.标准建表语法各项参数说明
1.create table 创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;用户可以用 if not exists 选项来忽略这个异常,一般也可以不加这个if not exists语句,最多抛出错误。

2.external关键字可以让用户创建一个外部表,默认是内部表,外部表在建表的必须同时指定一个指向实际数据的路径(location),hive 创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据。

3.comment 后面跟的字符串是给表字段或者表内容添加注释说明的,虽然它对于表之间的计算没有影响,但是为了后期的维护,所以实际开发都是必须要加comment的。

4. partitioned by其实是给表做分区,决定了表是否是分区表。hive中所谓分区表就是将表里新增加一个字段,就是分区的名字,这样你在操作表中的数据时,可以按分区字段进行过滤。具体分区解释后面博客有说明。

5.[row format delimited fields terminated by ',' ] 这里指定表存储中各列的划分格式,默认是\001,这里指定的是逗号分隔符,还可以指定其他列的分隔符,看实际需求

6.stored as   sequencefile|textfile|rcfile如果文件数据是纯文本,可以使用 stored as textfile。如果数据需要压缩,使用 stored as sequencefile。这里主要牵涉到hive存储的三种文件格式,具体区别参考后续博客。

7.clustered by对于每一个表(table)或者分区, hive可以进一步组织成桶,也就是说桶是更为细粒度的数据范围划分。hive也针对某一列进行桶的组织。hive采用对列值哈希,然后除以桶的个数求余的方式决定该条记录存放在哪个桶当中

8.location 其实是定义hive表的数据在hdfs上的存储路径,一般管理表(内部表不不要自定义),但是如果定义的是外部表,则需要直接指定一个路径。实际上不指定也没事,会使用默认路径