美文网首页SQL server大数据 爬虫Python AI Sql
使用split_size优化的ODPS SQL的场景

使用split_size优化的ODPS SQL的场景

作者: 阿里云技术 | 来源:发表于2019-03-26 16:03 被阅读4次

使用split_size优化的ODPS SQL的场景

首先有两个大背景需要说明如下:
说明1:split_size,设定一个map的最大数据输入量,单位M,默认256M。用户可以通过控制这个变量,从而达到对map端输入的控制。设置语句:set odps.sql.mapper.split.size=256。一般在调整这个设置时,往往是发现一个map instance处理的数据行数太多。

说明2:小文件越多,需要instance资源也越多,MaxCompute对单个Instance可以处理的小文件数限制为120个,如此造成浪费资源,影响整体的执行性能(文件的大小小于块Block 64M的文件)。

场景一:单记录数据存储太少

原始Logview Detail:

可以发现Job只调起一个Map Instance,供处理了156M的数据,但这些数据共有5千多万的记录(单记录平均3个byte),花费了25分钟。
此外,从TimeLine看可以发现,整个Job耗费43分钟,map占用了超过60%的时间。故可对map进行优化。

优化手段:调小split_size为16M

优化之后的logview:

优化后,可以发现,Job调起了7个Map Instance,耗时4分钟;某一个Map处理了27M的数据,6百万记录。(这里可以看出set split_size只是向Job提出申请,单不会严格生效,Job还是会根据现有的资源情况等来调度Instance)因为Map的变多,Join和Reduce的instance也有增加。整个Job的执行时间也下降到7分钟。

场景二:用MapJoin实现笛卡尔积

原始logview:

可以发现,Job调起了4个Map,花费了3个小时没有跑完;查看详细Log,某一个Map因为笛卡尔的缘故,生成的数据量暴涨。
综合考虑,因为该语句使用Mapjoin生成笛卡尔积,再筛选符合条件的记录,两件事情都由map一次性完成,故对map进行优化。

策略调低split_size
优化后的logview:

优化后,可以看到,Job调度了38个map,单一map的生成数据量下降了,整体map阶段耗时也下降到37分钟。
回头追朔这个问题的根源,主要是因为使用mapjoin笛卡尔积的方式来实现udf条件关联的join,导致数据量暴涨。故使用这种方式来优化,看起来并不能从根本解决问题,故我们需要考虑更好的方式来实现类似逻辑。



本文作者:祎休

原文链接

本文为云栖社区原创内容,未经允许不得转载。

相关文章

  • 使用split_size优化的ODPS SQL的场景

    使用split_size优化的ODPS SQL的场景 首先有两个大背景需要说明如下:说明1:split_size,...

  • 使用split_size优化的ODPS SQL的场景

    使用split_size优化的ODPS SQL的场景 首先有两个大背景需要说明如下: 说明1:split_size...

  • MySQL优化

    sql 语句优化 常用的sql优化建议: 避免使用 SELECT * 避免在WHERE 后面使用 <> 或者 !...

  • MySQl优化学习笔记(七)SQL优化简介

    一、SQL优化简介 1、我们平时说的SQL优化就是优化SQl语句和索引(通俗说就是使用什么样的SQL语句能够让索引...

  • ODPS SQL学习笔记一

    1、ODPS与Mysql的一个区别: 2、 3、ODPS SQL环境下日期类型的默认格式:yyyy-mm-dd h...

  • SQL编译转化为MapReduce的过程

    我们知道,目前Hive和ODPS在底层都将SQL编译转换为MapReduce任务执行,本文以ODPS为例,总结了一...

  • 实战001-提煤单明细查询

    一、code 二、优化代码 2.1、优化在循环中发SQL 优化后代码 二、SQL 二、使用 Profile 分析 ...

  • odps的使用

    odps是我们自主研发的一套数据处理服务。使用过hive的同学可以很快入门,语法与hive的sql基本一致。hiv...

  • ODPS开发笔记

    数据定义语言(DDL SQL) ODPS视图操作 数据操作语言(DML SQL) 动态分区 在insert ove...

  • SQL语句的优化

    sql语句的优化:多使用共享语句 尽量使你的sql语句能够使用索引。怎样使sql语句能够使用到索引呢:当sql语句...

网友评论

    本文标题:使用split_size优化的ODPS SQL的场景

    本文链接:https://www.haomeiwen.com/subject/yixnvqtx.html