数据库表的操作
1创建表
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]
[TBLPROPERTIES (property_name=property_value, ...)]
[AS select_statement]
其中[ ]的是可选项。
例子,根据给的文档创建一张表。
张三 18 男 扫地,做饭,洗碗 2000.20 2000-02-10 12:04:00 云南,昆明市,五华区 qq:9469444,微信:184681
李四 20 男 逛街,打球,打LOL 123122.80 1993-12-10 12:04:00 云南,昆明市,嵩明,杨林 qq:4869444,微信:1846829,电话:123456789
这是我们hive创建表最基本的语句。
create table table_people_opt(
name string ,
age int ,
gender string ,
hobby array<string> ,
wagger double,
birthday timestamp,
address struct<pro:string,city:string,area:string,twon:string>,
contact map<string,string>
)
接下分别介绍一下这些关键字的作用。
使用
desc table_people_opt;
语句可以查看创建表的结构。
1.IF NOT EXISTS
判断表是否存在,不存在在创建表
2.EXTERNAL
当我们加上EXTERNAL关键字时代表这个表是外部表,不加代表这个表是内部表(管理表)
内部表
hive控制着这个表的生命周期,hive默认会把表存储在 配置项hive.metastore.warehouse.dir的值的子目录下。
比如我们上面创建的table_people_opt表,它就存放在 HDFS的/user/hive/warehouse/db_hive.db/table_people_opt下,/user/hive/warehouse是自己配置的默认保存数据库的路径。
当我们删除表的时候,也会将这个目录下的文件给删除了。
外部表
当我们在创建表的时间加上EXTERNAL关键字,意味着我们创建的是外部表。在hive中删除外部表的时候,并不会将这张表删除。
create EXTERNAL table IF NOT EXISTS table_people_opt(
name string ,
age int ,
gender string ,
hobby array<string> ,
wagger double,
birthday timestamp,
address struct<pro:string,city:string,area:string,twon:string>,
contact map<string,string>
)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v1YF610E-1622386114098)(F:\开发文档\md\image-20210509203117156.png)]
drop table table_people_opt;
在hdfs中,不管在hive中删不删除都会table_people_opt这个文件夹都会一直存在
3.LOCATION
location关键字指定我们加载表的数据存储在HDFS上的什么位置上。