Hive学习总结之二:HiveQL介绍DDL

Hive支持原子和复杂数据类型。原子数据类型包括数值型、布尔型和字符串类型,其中数值型有int / bigint / smallint / tinyint /double / float,布尔型为boolean,字符串类型为string。复杂数据类型包括数组(Array)、集合(Map)和结构(Struct)。Hive还提供了大量的内置函数,诸如数学和统计函数、字符串函数、日期函数、条件函数、聚集函数等。当无法用Hive提供的内置函数来表示时,用户可以使用UDF(用户自定义函数)。Hive中有三种UDF:UDF(普通)、UDAF(用户定义聚集函数)和UDTF(用户定义表生成函数)。

第一部分:DDL

Hive提供的DDL包含如下操作:

•建表

1)  建立内部表

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]

CREATE TABLE 创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;用户可以用 IF NOT EXIST 选项来忽略这个异常

EXTERNAL 关键字可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径(LOCATION)

LIKE 允许用户复制现有的表结构,但是不复制数据

COMMENT可以为表与字段增加描述

STORED AS

SEQUENCEFILE

| TEXTFILE

| RCFILE

|INPUTFORMAT input_format_classname OUTPUTFORMAT             output_format_classname

如果文件数据是纯文本,可以使用 STORED AS TEXTFILE。如果数据需要压缩,使用 STORED AS SEQUENCE 。

2)建立外部表

CREATE EXTERNAL TABLE page_view(viewTime INT, userid BIGINT,

page_url STRING, referrer_url STRING,

ip STRING COMMENT ‘IP Address of the User’,

country STRING COMMENT ‘country of origination’)

COMMENT ‘This is the staging page view table’

ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘\054′

STORED AS TEXTFILE

LOCATION ‘<hdfs_location>’;

3)建立分区表

CREATE TABLE par_table(viewTime INT, userid BIGINT,

page_url  STRING, referrer_url STRING, ip STRING COMMENT ‘IP Address of the User’)

COMMENT ‘This is the page view table’

PARTITIONED BY(date STRING, pos STRING)

ROW FORMAT DELIMITED ‘\t’

FIELDS TERMINATED BY ‘\n’

STORED AS SEQUENCEFILE;

3)建Bucket表

CREATE TABLE par_table(viewTime INT, userid BIGINT,

page_url STRING, referrer_url STRING, ip STRING COMMENT ‘IP Address of the User’)

COMMENT ‘This is the page view table’

PARTITIONED BY(date STRING, pos STRING)

CLUSTERED BY(userid) SORTED BY(viewTime) INTO 32 BUCKETS

ROW FORMAT DELIMITED ‘\t’

FIELDS TERMINATED BY ‘\n’

STORED AS SEQUENCEFILE;

4)复制一个空表

CREATE TABLE empty_key_value_store

LIKE key_value_store;

 

•删除表

DROP TABLE table_name

 

•修改表结构

修改表结构操作包括增加分区、删除分区、重命名表、修改列的名字、类型、位置、注释及增加/更新列、增加表的元数据信息。

增加分区 ALTER TABLE table_name ADD [IF NOT EXISTS] partition_spec [ LOCATION 'location1' ]
删除分区 ALTER TABLE table_name DROP partition_spec, partition_spec,…
重命名表 ALTER TABLE table_name RENAME TO new_table_name
修改列的名字、类型、位置、注释 ALTER TABLE table_name CHANGE [COLUMN] col_old_name col_new_name column_type [COMMENT col_comment] [FIRST|AFTER column_name]
增加/更新列 ALTER TABLE table_name ADD|REPLACE COLUMNS (col_name data_type [COMMENT col_comment], …)
增加表的元数据信息 ALTER TABLE table_name SET TBLPROPERTIES table_properties table_properties:

•改变表文件格式与组织

ALTER TABLE table_name SET FILEFORMAT file_format

ALTER TABLE table_name CLUSTERED BY(userid) SORTED BY(viewTime) INTO num_buckets BUCKETS

这个命令修改了表的物理存储属性。

•创建/删除视图

CREATE VIEW [IF NOT EXISTS] view_name [ (column_name [COMMENT column_comment], …) ][COMMENT view_comment][TBLPROPERTIES (property_name = property_value, ...)] AS SELECT
DROP VIEW view_name
如果没有提供表名,视图列的名字将由定义的SELECT表达式自动生成。

如果修改基本表的属性,视图中不会体现,无效查询将会失败。

视图是只读的,不能用LOAD/INSERT/ALTER。

•创建数据库

CREATE DATABASE name

•显示命令

show tables;

show databases;

show partitions ;

show functions

describe extended table_name dot col_name

你可能感兴趣的:(hive,hive,DDL,hiveQL,Hive语法)