当前位置: 首页 > 科技观察

SQL-Hive中常用的表操作

时间:2023-03-11 23:22:23 科技观察

本文转载自微信公众号《寻山猫谈数据》,作者寻山猫。转载本文请联系迅山猫谈数据公众号。今天我们就来聊一聊Hive中常用的表操作指令和相关作用。Hive系列文章预计10-20篇,主要讲数据分析中最基本的SQL技巧。01-最基本的建表语句Hive整个建表语法如下:CREATE[EXTERNAL]TABLE[IFNOTEXISTS]表名(列名data_type[COMMENT列注释],...)[COMMENT表注释][PARTITIONEDBY(列名data_type[COMMENT列注释],...)][CLUSTEREDBY(列名,列名,...)[SORTED,BY(列名[ASC|DESC],...)]INTONum_bucketsBUCKETS][ROWFORMATrow_format][STOREDASfile_format][LOCATIONhdfs_path][]中的所有内容都是可选的,可以是可选的,下面我们会详细介绍。CREATE[EXTERNAL]TABLE[IFNOTEXISTS]表名(列名data_type)必须包含在表创建语句中。比如我们要创建一个用户启动表:CREATETABLEt_od_use_cnt(date_8INT,platformstring,app_versionstring,user_idBIGINT,use_cntINT,is_activeTINYINT);首先,我们构建一个图书馆应用程序,然后使用它并在其中构建一个表。执行效果如下:hive>createdatabaseapp;OKTimetaken:0.899secondshive>useapp;OKTimetaken:0.03secondshive>createtablet_od_use_cnt(>date_8int>,platformstring>,app_versionstring>,user_idbigint>,use_cnntint>,is_activetinyint>);OKTimetaken:0.389seconds注意:Hive中关键字不区分大小写,所有关键字都可以小写。02-查看表结构执行语句:DESC表名;查询上一步新建表的字段及字段对应的数据类型,运行效果如下:hive>desct_od_use_cnt;OKdate_8intplatformstringapp_versionstringuser_idbigintuse_cntintis_activetinyintTimetaken:0.28seconds,Fetched:6row(s)03-DeletethetableDelete语句表的删除与删除库类似,只是数据库换成表,使用drop关键字进行删除操作,操作注意:DROPTABLE表名;04-创建分区表Hive有分区表的概念,分区表的变化定义了Hive如何组织数据存储。如果我们在查询的时候限制分区范围,Hive可以直接查询对应目录下的数据,而不用扫描整张表,这样在数据量很大的时候,查询性能可以得到明显的提升。创建分区表,使用关键字[PARTITIONEDBY(col_namedata_type[COMMENTcol_comment],...)],注意分区字段不能在普通字段中重复出现。分区表在工作中很常见。一般来说,一个公司的所有表都会按日期进行分区,以提高查询效率。我们以t_od_use_cnt为例。建表语句如下:CREATETABLEt_od_use_cnt(platformstringcomment'平台android,ios',app_versionstringcomment'app版本',user_idBIGINTcomment'用户id',use_cntINTcomment'当天使用次数',is_activeTINYINTcomment'已激活')partitionedBY(date_8INTcomment'日期');05-查询现有的建表语句。当需要查询公司已有表的建表格式时,可以使用如下语句:showcreatetabletablename;查询上面创建的表的效果如下:hive>showcreatetablet_od_use_cnt;OKCREATETABLE`t_od_use_cnt`(`platform`stringCOMMENT'platformandroid,ios',`app_version`stringCOMMENT'appversion,',`user_id`bigintCOMMENT'userid',`use_cnt`intCOMMENT'当天使用次数',`is_active`tinyintCOMMENT'活跃')PARTITIONEDBY(`date_8`intCOMMENT'date')ROWFORMATDELIMITEDFIELDSTERMINATEDBY','STOREDASINPUTFORMAT'org.apache.hadoop.mapred.TextInputFormat'OUTPUTFORMAT'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'LOCATION'hdfs://hdfs:9000/usr/hive/warehouse/t_od_use_cnt'TBLPROPERTIES('transient_lastDdlTime'='1556161316')

最新推荐
猜你喜欢