adaptive

Spark-SQL adaptive 自适应框架

人盡茶涼 提交于 2020-04-06 17:35:02
一、自适应框架能解决什么问题 1、目前SparkSQL中reduce阶段的task个数取决于固定参数spark.sql.shuffle.partition(默认值200),一个作业一旦设置了该参数,它运行过程中的所有阶段的reduce个数都是同一个值。 而对于不同的作业,以及同一个作业内的不同reduce阶段,实际的数据量大小可能相差很大,比如reduce阶段要处理的数据可能是10MB,也有可能是100GB, 如果使用同一个值对实际运行效率会产生很大影响,比如10MB的数据一个task就可以解决,如果spark.sql.shuffle.partition使用默认值200的话,那么10MB的数据就要被分成200个task处理,增加了调度开销,影响运行效率。 SparkSQL自适应框架可以通过设置shuffle partition的上下限区间,在这个区间内对不同作业不同阶段的reduce个数进行动态调整。 通过区间的设置,一方面可以大大减少调优的成本(不需要找到一个固定值),另一方面同一个作业内部不同reduce阶段的reduce个数也能动态调整 参数如下: spark . sql . adaptive . enabled 默认false 自适应执行框架的开关 spark . sql . adaptive . minNumPostShufflePartitions 默认为1

Spark-SQL处理小文件问题

老子叫甜甜 提交于 2020-04-06 17:31:17
一、小文件产生的原因 1、在使用spark sql处理数据的过程中,如果有shuffle产生,依赖于spark.sql.shuffle.partitions配置信息,默认为200,当处理的数据量比较大时,通常会把该值调大,以避免单个分区处理的数据太大出现异常或者拖慢整个任务的执行时间。 2、如果没有shuffle产生,文件的数量依赖于数据源的文件数量以及文件是否可切分等特性决定任务的并发度即task数量,如果在进行数据清洗转换或者的过程中通常不会涉及shuffle,此时会产生很多小文件,造成资源的浪费,给NameNode增加压力。 二、如何解决小文件问题 1)、降低spark.sql.shuffle.partitions配置的值,但会影响处理的并发度 2)、使用repartition和coalesce 根据经验调整分区数的大小,但是太不灵活,如果使用spark-sql cli方式,就很不方便 3)、在数据入库的时候使用distribute by 字段或者rand(),但是此时对字段的选择就需要慎重 4)、spark sql adaptive 自适应框架 三、spark-sql adaptive框架解决小文件问题 1、打开自适应框架的开关 spark . sql . adaptive . enabled true 2、设置partition的上下限 spark . sql .

Dubbo SPI 使用方法(二)- 扩展点自适应

元气小坏坏 提交于 2020-03-27 17:31:56
3 月,跳不动了?>>> 开篇 上一篇讲到了 Dubbo SPI 使用方法(1) - 扩展点自动包装 。 本文接着讲 Dubbo SPI - 扩展点自适应。 正文 大纲 扩展点自适应介绍 @Adaptive 注解使用方法 作用在类上 作用在方法上 1. 扩展点自适应 ExtensionLoader 注入的依赖扩展点是一个 Adaptive 实例,直到扩展点方法执行时才决定调用是哪一个扩展点实现。 Dubbo 使用 URL 对象(包含了Key-Value)传递配置信息。 扩展点方法调用会有 URL 参数(或是参数有URL成员)这样依赖的扩展点也可以从URL拿到配置信息,所有的扩展点自己定好配置的 Key 后,配置信息从 URL 上从最外层传入。URL在配置传递上即是一条总线。 上面摘自官网的一段介绍。 划重点: 扩展方法中有 URL 参数 也可以是包含 URL 成员的参数 直到扩展点方法执行时,才决定调用哪个扩展点实现 跟 扩展点自动包装 的区别 通过 URL 传递配置信息 通过 URL 中的参数,决定调用哪个扩展类实现 如果还是不好理解,就继续看下面的案例。 2. @Adaptive 注解 要想实现 扩展点自适应 ,需要借助 @Adaptive 注解,该注解可以作用在两个地方: 扩展实现类上 在类上,表示该类是一个扩展类,不需要生成代理直接用即可; 扩展接口方法上

Android 开发技术周报 Issue#272

社会主义新天地 提交于 2020-03-16 13:26:13
某厂面试归来,发现自己落伍了!>>> 新闻/News 谷歌Pixel 4a将采用UFS 2.1存储:可以体验全套GMS [图]Android端Play商城现全面开放深色主题 教程/Tutorial OkHttp Interceptor - Making the most of it 📚 Android 所有动画系列详尽教程 开源库/Librarys Licenser An android library to display the licenses of your application libraries in a easy way. RxCoroutineSchedulers Kotlin Coroutines as RxJava Schedulers 😈 moko-widgets Multiplatform UI DSL with screen management in common code for mobile (android & ios) Kotlin Multiplatform development ScalingImageView Android ImageView that transforms its drawable according to user input LockTableView Android自定义表格,支持锁双向表头,自适应列宽

CVPR 2020 全部论文 分类汇总和打包下载

一世执手 提交于 2020-03-11 01:34:31
CVPR 2020 共收录 1470篇文章,根据当前的公布情况,人工智能学社整理了以下约100篇,分享给读者。 代码开源情况:详见每篇注释,当前共15篇开源。(持续更新中,可关注了解)。 关注我们,持续更新,捕捉最新 ~~ 算法主要领域:图像与视频处理,图像分类&检测&分割、视觉目标跟踪、视频内容分析、人体姿态估计、模型加速、网络架构搜索(NAS)、生成对抗(GAN)、光学字符识别(OCR)、人脸识别、三维重建等方向。 目录如下: 总目录 图像处理 Deep Image Harmonization via Domain Verification 论文: https://arxiv.org/abs/1911.13239 代码: https://github.com/bcmi/Image_Harmonization_Datasets Learning to Shade Hand-drawn Sketches 论文: https://arxiv.org/abs/2002.11812 Generalized ODIN: Detecting Out-of-distribution Image without Learning from Out-of-distribution Data 论文: https://arxiv.org/abs/2002.11297 Single Image

腾讯云技术分享:MySQL AHI 实现解析

泄露秘密 提交于 2020-02-29 12:54:16
MySQL 定位用户记录的过程可以描述为:打开索引 -> 根据索引键值逐层查找 B+ 树 branch 结点 -> 定位到叶子结点,将 cursor 定位到满足条件的 rec 上;如果树高为 N, 则需要读取索引树上的 N 个结点并进行比较,如果 buffer_pool 较小,则大量的操作都会在 pread 上,用户响应时间变长;另外,MySQL中 Server 层与 Engine 之间的是以 row 为单位进行交互的,engine 将记录返回给 server 层,server 层对 engine 的行数据进行相应的计算,然后缓存或发送至客户端,为了减少交互过程所需要的时间,MySQL 做了两个优化: 如果同一个查询语句连续取出了 MYSQL_FETCH_CACHE_THRESHOLD(4) 条记录,则会调用函数 row_sel_enqueue_cache_row_for_mysql 将 MYSQL_FETCH_CACHE_SIZE(8) 记录缓存至 prebuilt->fetch_cache 中,在随后的 prebuilt->n_fetch_cached 次交互中,都会从prebuilt->fetch_cache 中直接取数据返回到 server 层,那么问题来了,即使是用户只需要 4 条数据,Engine 层也会将 MYSQL_FETCH_CACHE_SIZE 条数据放入

图解MySQL | [原理解析] Adaptive Hash Index 是如何建立的

佐手、 提交于 2020-02-26 09:24:26
转载自公众号:图解MySQL Adaptive Hash Index(以下简称 AHI)估计是 MySQL 的各大特性中,大家都知道名字但最说不清原理的一个特性。本期图解我们为大家解析一下 AHI 是如何构建的。 首先我们思考一下 AHI 是为了解决什么问题: 随着 MySQL 单表数据量增大,(尽管 B+ 树算法极好地控制了树的层数)索引 B+ 树的层数会逐渐增多; 随着索引树层数增多,检索某一个数据页需要沿着 B+ 树从上往下逐层定位,时间成本就会上升; 为解决检索成本问题,MySQL 就想到使用某一种缓存结构:根据某个检索条件,直接查询到对应的数据页,跳过逐层定位的步骤。这种缓存结构就是 AHI。 AHI 在实现上就是一个哈希表:从某个检索条件到某个数据页的哈希表,仿佛并不复杂,但其中的关窍在于哈希表 不能太大 (哈希表维护本身就有成本,哈希表太大则成本会高于收益), 又不能太小 (太小则缓存命中率太低,没有任何收益)。 这就是 AHI(中文名:自适应哈希索引)中"自适应"的用途:建立一个"不大不小刚刚好"的哈希表。 本文主要讨论 MySQL 是如何建立起一个"刚刚好"的 AHI 的,如图 1 所示:需要经历三个关卡,才能为某个数据页建立 AHI,之后的查询才能使用到该 AHI。 我们逐个关卡来介绍: 关卡 1:某个索引树要被使用足够多次 AHI 是为某个索引树建立的

苹果笔记本电池怎么维护保养?macbook电池应注意事项

送分小仙女□ 提交于 2020-01-08 16:44:56
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 现在越来越多的小伙伴入手了苹果笔记本电脑,可是面对心爱的macbook,真心不知道该如何呵护它!下面macdown小编就为大家带来最正宗的苹果笔记本电池维护保养方法,还不了解的小伙伴赶快来看看哦! 对于苹果笔记本的电池,比普通笔记本的电池性能要好很多。首先我们要了解一下电池的基本特性 1、笔记本电脑温度带--电池处于适宜的温度效果最佳 Apple 笔记本电脑运行的最佳温度在 50° 到 95° F 范围内。你应该将它们存放在 -13° 到 113° 的环境中。也就是说,10° 到 35° C 和 -25° 到 45° 是运行与存放笔记本电脑的适宜温度。尽量让你的 Apple 电脑接近房间的温度 (22°C) 是最理想的。 如果你的设备是一款全新 Apple 笔记本电脑,而且采用了先进的电池化学技术,大幅延长了电池使用寿命。那么acBook Pro 或 MacBook AI r 的内置电池在电池容量降至初始容量的 80% 以前,可以实现多达 1000 次完全充电和放电循环。而且,Adaptive Charging 智能调节充电方式可以降低电池损耗,使其使用寿命长达 5 年之久。当你第一次使用新买来的便携式电脑时,切记要充满电,然后再运行软件更新以确保你电脑里装有最新的软件。Apple

浅谈dubbo spi机制

本秂侑毒 提交于 2019-12-28 15:54:56
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 例如: private static final Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension(); 首先分析getExtensionLoader方法:很简单先查询EXTENSION_LOADERS是否存在不存在就new一个返回 public static <T> ExtensionLoader<T> getExtensionLoader(Class<T> type) { if (type == null) { throw new IllegalArgumentException("Extension type == null"); } if (!type.isInterface()) { throw new IllegalArgumentException("Extension type(" + type + ") is not interface!"); } if (!withExtensionAnnotation(type)) { throw new IllegalArgumentException("Extension type(" + type + ") is

ProxyFactory$Adaptive

笑着哭i 提交于 2019-12-25 19:11:37
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> package com.alibaba.dubbo.rpc; import com.alibaba.dubbo.common.Node; import com.alibaba.dubbo.common.URL; import com.alibaba.dubbo.common.extension.ExtensionLoader; public class ProxyFactory$Adaptive implements ProxyFactory { public Object getProxy(Invoker paramInvoker) throws RpcException { if (paramInvoker == null) { throw new IllegalArgumentException("com.alibaba.dubbo.rpc.Invoker argument == null"); } if (paramInvoker.getUrl() == null) { throw new IllegalArgumentException("com.alibaba.dubbo.rpc.Invoker argument getUrl() == null"); } URL localURL =