2023学年完整公开课版HiveSQL调优_第1页
2023学年完整公开课版HiveSQL调优_第2页
2023学年完整公开课版HiveSQL调优_第3页
2023学年完整公开课版HiveSQL调优_第4页
2023学年完整公开课版HiveSQL调优_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

HiveSQL调优1.理解SQL调优

2.具备SQL调优能力1.

SQL调优建议

2.SQL调优总结

1.尽量尽早地过滤数据,减少每个阶段的数据量,对于分区表要加分区,同时只选择需要使用到的字段2.尽量原子化操作,尽量避免一个SQL包含复杂逻辑,可以使用中间表来完成复杂的逻辑3.小表要注意放在join的左边(目前TCL里面很多都小表放在join的右边。否则会引起磁盘和内存的大量消耗4.如果unionall的部分个数大于2,或者每个union部分数据量大,应该拆成多个insertinto语句,实际测试过程中,执行时间能提升50%5.写SQL要先了解数据本身的特点,如果有join,group操作的话,要注意是否会有数据倾斜HiveSQL调优的一些小建议使用分区剪裁、列剪裁

意思是,在select中,只拿需要的列,如果有,尽量使用分区过滤,少使用select*

另外在分区裁剪中,当使用外关联时,副表的过滤条件如果使用where就会导致先全表关联在过滤,应该改用on,或者之间使用子查询少用count(distinct)count(distinct)是由一个reducetask来完成的,这一个reduce需要处理的数据量太大,就会导致整个job很难完成。count(distinct)可以使用先groupby再count的方式来替换HiveSQL调优总结多对多的关联

1.如果存在多对多关联,起码要保证有一个表或者结果集的关联键不重复 2.如果某一个关联键的记录数非常多,那么分配到该reducetask的数据量将非常大,会导致整个job很难完成 3.避免笛卡尔集HiveSQL调优总结合理使用UnionALL

1.对同一张表的unionall要比多重insert快得多。 2.原因是hive本身对这种unionall做过优化,即只扫描依次源表,多重insert虽然也只扫描一次,但因为要insert到多个分区,所以做了很多其他的事情,导致消耗的时间非常长。HiveSQL调优总结合理使用动态分区动态分区可以优化诸如需要往指定分区插入数据的这种操作。配置参数:hive.exec.dynamic.partition:是否开启动态分区,默认为false,设置成truehive.exec.dynamic.partition.mode:默认值表示必须指定至少一个静态分区,默认为strict,设置成nonstricthive.exec.max.dynamic.partitions.pernode:在每个执行MR的节点上,最大可以创建多少个动态分区,默认100,按实际情况来定hive.exec.max.created.files:整个MRJob中,最大可以创建多少个HDFS文件,默认值:100000,一般默认值足够了,除非你的数据量非常大,需要创建的文件数大于100000,可根据实际情况加以调整。hive.error.on.empty.partition:当有空分区生成时,是否抛出异常,默认值:false,一般不需要设置。HiveSQL调优总结避免数据倾斜症状:任务进度长时间维持在99%(或100%);查看任务监控页面,发现只有少量(1个或几个)reduce子任务未完成。本地读写数据量

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论