当前位置: 首页 > news >正文

Hive操作表部分总结

创建表:

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、合并小文件

相关文章:

  • 电邮欺诈需重视 TurboMail邮件系统保护您
  • IOS-利用AFNetworking监听网络状态
  • WCF学习之旅—WCF服务部署到应用程序(十)
  • 第三节课作业——指针
  • AngularJS 应用身份认证的技巧
  • UDP数据报
  • 实时预测用户对物品偏好 阿里云推荐引擎帮助你更好的提升业务
  • PHPer书单
  • 【译】使用newInstance()来实例化fragment
  • Android 2.3 r1 中文API (78)—— ViewAnimator
  • 构建之法阅读笔记06
  • 实现多点跳跃登录Xshell使用教程
  • [UML]UML系列——类图class的实现关系Realization
  • iOS不得姐项目--pop框架的初次使用
  • Mysql主主同步-配置数据同步
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • bearychat的java client
  • CODING 缺陷管理功能正式开始公测
  • docker容器内的网络抓包
  • exif信息对照
  • gf框架之分页模块(五) - 自定义分页
  • Java 多线程编程之:notify 和 wait 用法
  • Laravel 菜鸟晋级之路
  • PHP面试之三:MySQL数据库
  • Promise初体验
  • Spring核心 Bean的高级装配
  • SQLServer插入数据
  • Terraform入门 - 1. 安装Terraform
  • TypeScript迭代器
  • Vue.js源码(2):初探List Rendering
  • XML已死 ?
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 给新手的新浪微博 SDK 集成教程【一】
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 如何进阶一名有竞争力的程序员?
  • 设计模式(12)迭代器模式(讲解+应用)
  • 深度解析利用ES6进行Promise封装总结
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • ​​​​​​​​​​​​​​Γ函数
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • #、%和$符号在OGNL表达式中经常出现
  • #100天计划# 2013年9月29日
  • (3)(3.5) 遥测无线电区域条例
  • (5)STL算法之复制
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (强烈推荐)移动端音视频从零到上手(下)
  • (四)linux文件内容查看
  • (四)鸿鹄云架构一服务注册中心
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .Net core 6.0 升8.0
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...
  • .NET精简框架的“无法找到资源程序集”异常释疑