前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hive操作表部分总结

Hive操作表部分总结

作者头像
用户3003813
发布2018-09-06 14:19:59
5500
发布2018-09-06 14:19:59
举报
文章被收录于专栏:个人分享个人分享

创建表:

create table tableName(time INT,userid BIGINT,url STRING,ip STRING COMMENT 'IP Address of the User') COMMENT 'This is the tableName table' PARTITIONED BY (dt STRING,country String)  CLUSTERED BY(userid) SORTED BY(time) INTO 32 BUCKETS ROW FORMAT DELIMITED FIELDS TERMINATED BY '001'  MAP KEYS TERMINATED BY '\003' STORED as SEQUENCEFILE;

按照userid进行分区划分到不同的桶中,并按照time值的大小进行排序存储。这样的组织结构允许通过userid属性高效地对集群列进行采样。

删除表:

drop table tableName;

修改表、分区语句:

alter table tableName add partition_spec [LOCATION 'location1'] partition_spec [LOCATION 'location2']...

用户可以用alter table add partition来对表增加分区。当分区名字是字符串时加引号,比如对上述建表语句中:

alter table tableName add partition(dt='2010-08-08',country='us') location '/path/to/us/part080808' parition(dt='2010-08-09',country='us') location '/path/to/us/part080809';

删除分区:

alter table tableName drop partition(dt='2010-08-08'),country='us');

将会删除分区,分区的元数据和数据将被一并删除。

重建表名:

alter table tableName rename to newtableName 

可以更换表名,数据所在的位置和分区名并不改变。这里老的表名并未被释放,对老表进行修改会改变新表的数据。

改变列名字/类型/位置/注释:

alter table tableName change [column] col_old_name col_new_name column_type [comment col_comment] [FIRST| after column_name]

数据操作(DML)

LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] into table tableName [partition(partcl1 = val1....]

其中filepath可以是相对路径也可以是绝对路径,或者是filepath可以是完整的URL(例如:hdfs://namenodeIP:9000/user/admin/project/data1).加载的目标可以是一个表或分区,如果表包含分区则必须制定每个分区的分区名。

JOIN操作

当使用写有Join操作的查询语句时,有一条原则,应该将条目少的表/子查询放在join操作符的左边,原因是这样可以有效减少发生内存溢出的几率

GROUP BY操作

1、map端部分聚合,并不是所有的数据聚合操作都要在reduce端进行聚合,这里需要修改参数为:hive.map.aggr = true,用于是否在map端进行聚合。默认为true.   hive.groupby.mapaggr.checkinterval = 100000,用于设定在map端进行聚合的条目数。

2、数据倾斜时进行负载均衡。需要设定hive.groupby.skewindata,当选项为true时,生成的查询计划会有两个mapreduce任务。在第一个mapreduce中,map的输出结果集合会随机分不到reduce中,每个reduce做部分聚合操作,并输出结果。这样处理的结果是,相同的group by key 有可能被分发到不同的reduce中,从而达到负载均衡的作用。第二个MapReduce任务再根据预处理的数据结果按照Group By Key分布到reduce中(这个过程可以保证相同的Group By Key 分布到同一个Reduce中),最后完成最终的聚合操作。

3、合并小文件

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-05-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档