Hive创表语法
create [external] table [if not exists] [db_name.]table_name
(col1_name data_type,col2_name data_type,...)
[comment table_comment]
[partitioned by (col1_name data_type)]
[clustered by (col_name,...) [sorted by (col1_name [asc|desc],...)] into num_buckets buckets]
[row format delimited fields terminated by “xx”]
[collcetion items terminated by ]
[map keys terminated by]
[stored as file_format]
[location hdfs_path]
注解:
external:外部表。
partitioned by 指定分区字段。
clustered by sorted by:可以对表和分区对某个列进行分桶操作,也可以利用sorted by对某个字段进行排序。
row format delimited fields terminated by “\t” :指定数据行中字段捡的分隔符和数据行分隔符。
stored as:指定数据文件格式 textfile、sequence、rcfile、inputformat。
location:指定数据文件存放的hdfs目录。
数据类型
基本数据类型
整数类型:tinyint/smallint/int/bigint
浮点类型:float/doublr
布尔类型:boolean
字符串类型:string/varchar/char
复杂数据类型
数组类型:array,由一系列相同的数据类型的元素组成。
集合类型:map,包含key->value键值对,可通过key访问元素。
结构类型:struct,可以包含不同数据类型的元素,这些元素可以通过“点语法”的方式来得到所需要的元素。
时间类型
日期:Date,年月日
时间戳:timestamp,是Unix的一个时间偏移量 。
select unix_timestamp();查看系统的时间偏移量。
删除表:可以删除内部表的元数据和表数据文件,只能删除外部表的元数据。
drop table [if exists] table_name
HiveQL加载数据几种方式(列举是本人自己用过的方式)
1.从本地文件系统导入到指定的hive数据表。
2.从hdfs导入数据到指定的hive数据表。
3.从别的表中查询出相应的数据导入到指定的hive表中。
4.在创建表的时候通过从别的表中查询抽出相应的记录并插入到锁创建的表中。
5.从HBase中把数据映射到指定的hive表中。