stage

sparksql比hivesql优化的点(窗口函数)

烈酒焚心 提交于 2020-04-07 16:29:58
​有时候,一个 select 语句中包含多个窗口函数,它们的窗口定义(OVER 子句)可能相同、也可能不同。 对于相同的窗口,完全没必要再做一次分区和排序,我们可以将它们合并成一个 Window 算子。 比如 spark、hive中窗口函数实现原理复盘 中的案例: select id , sq, cell_type, rank , row_number() over ( partition by id order by rank ) naturl_rank, rank () over ( partition by id order by rank ) as r, dense_rank () over ( partition by cell_type order by id ) as dr from window_test_table group by id ,sq,cell_type, rank ; row_number() r ank() 的窗口一样,可以放在一次分区和排序中完成,这一块hive sql与spark sql的表现是一致的。 但对于另外一种情况: select id , rank , row_number() over ( partition by id order by rank ) naturl_rank, sum ( rank ) over (

spark 任务运行原理

痞子三分冷 提交于 2020-03-30 07:58:58
调优概述 在开发完Spark作业之后,就该为作业配置合适的资源了。Spark的资源参数,基本都可以在spark-submit命令中作为参数设置。很多Spark初学者,通常不知道该设置哪些必要的参数,以及如何设置这些参数,最后就只能胡乱设置,甚至压根儿不设置。资源参数设置的不合理,可能会导致没有充分利用集群资源,作业运行会极其缓慢;或者设置的资源过大,队列没有足够的资源来提供,进而导致各种异常。总之,无论是哪种情况,都会导致Spark作业的运行效率低下,甚至根本无法运行。因此我们必须对Spark作业的资源使用原理有一个清晰的认识,并知道在Spark作业运行过程中,有哪些资源参数是可以设置的,以及如何设置合适的参数值。 Spark作业基本运行原理 详细原理见上图。我们使用spark-submit提交一个Spark作业之后,这个作业就会启动一个对应的Driver进程。根据你使用的部署模式(deploy-mode)不同,Driver进程可能在本地启动,也可能在集群中某个工作节点上启动。Driver进程本身会根据我们设置的参数,占有一定数量的内存和CPU core。而Driver进程要做的第一件事情,就是向集群管理器(可以是Spark Standalone集群,也可以是其他的资源管理集群,美团•大众点评使用的是YARN作为资源管理集群)申请运行Spark作业需要使用的资源

人体姿态估计之MSPN

回眸只為那壹抹淺笑 提交于 2020-03-29 13:00:53
首先先回答一下为什么multi-stage非常适合姿态估计这个任务呢?原因是:第一,对人体关节的预测需要给出准确的坐标值,这本身就需要有一个比较高的resolution; 第二, 对一些难度比较高的关节预测任务,不能仅仅去看关节点本身的feature,还需要结合整个图像的上下文来做出判断,而要获取上下文的信息就必须减小resolution( 有人可能说,增大卷积的kernel size 可以在不损失分辨率的情况下增大感受野,但是这种做法的效率很低,而且会大大增加参数量)。前面说的第一点和第二点构成了一对矛盾, 而怎么解决这一对矛盾呢?就是用 multi-stage。比如在stage 1的 down-sampling的时候,是产生低分辨率feature的过程,然后在up-sampling的过程中,产生heatmap,注意:由于不同关节点的heatmap是同时生成的,所以生成关节点a的heatmap的过程中没法参照关节点b的位置(对于关节点a而言,关节点就是一个context信息),那么如何才能利用context信息呢? 只有再搞一个stage,把前一个stage中学到的上下文信息利用起来。 上面是从图像context信息的角度来说明为什么multi-stage是必要的,其实这个问题还可以从另外一个角度来解读:那就是第一段中讲到的人体姿态估计的矛盾决定了好的解决方案必定是high

Spark之RDD

送分小仙女□ 提交于 2020-03-25 21:26:40
一:RDD简介 (一)RDD概念 RDD(Resilient Distributed DataSet),弹性分布式数据集, 是Spark中最基本,也是最重要的数据抽象, 它 代表一个不可变、可分区、里面的元素可并行计算的集合 。RDD具有数据流模型的特点:自动容错、位置感知度调度和可伸缩性。RDD允许用户在执行多个查询时显式地将工作集缓存在内存中,后续的查询能重用工作集,这极大地提升了查询速度。因为有RDD,所以Spark才支持分布式的计算。RDD由分区组成。 (二)RDD的五个特性 (1)一组分片( Partition ),即数据集的基本组成单位。---RDD会被分片处理,用于并行计算 对于RDD来说,每个分片都会被一个计算任务处理,并决定并行计算的粒度。用户可以在创建RDD时指定RDD的分片个数,如果没有指定,那么就会采用默认值。默认值就是程序所分配到的CPU Core的数目。 (2)一个计算每个分区的函数。---一个对每个split(数据分区)进行计算的函数,也称为RDD的算子 Spark中RDD的计算是以分片为单位的,每个RDD都会实现compute函数以达到这个目的。compute函数会对迭代器进行复合,不需要保存每次计算的结果。 (3)RDD之间的依赖关系。(DAG有向无环图调度构造依赖关系) RDD的每次转换都会生成一个新的RDD

Spark必背面试题

守給你的承諾、 提交于 2020-03-20 18:27:15
3 月,跳不动了?>>> 1,spark的工作机制 用户在客户`端提交作业后,会由Driver运行main方法并创建SparkContext上下文, SparkContext向资源管理器申请资源, 启动Execotor进程, 并通过执行rdd算子,形成DAG有向无环图,输入DAGscheduler, 然后通过DAGscheduler调度器, 将DAG有向无环图按照rdd之间的依赖关系划分为几个阶段,也就是stage, 输入task scheduler, 然后通过任务调度器taskscheduler将stage划分为task set分发到各个节点的executor中执行。 2,spark中stage是如何划分的 在DAG调度的过程中,Stage阶段的划分是根据是否有shuffle过程,也就是存在ShuffleDependency宽依赖的时候,需要进行shuffle,这时候会将作业job划分成多个Stage 整体思路:从后往前推,遇到宽依赖就断开,划分为一个 stage;遇到窄依赖就将这个 RDD 加入该 stage 中 3, spark的shuffle和调优 Spark中一旦遇到宽依赖就需要进行shuffle的操作,本质就是需要将数据汇总后重新分发的过程, 也就是数据从map task输出到reduce task输入的这段过程, 在分布式情况下,reduce

Hive笔记

穿精又带淫゛_ 提交于 2020-03-20 14:02:35
1、-- 导入数据 load data local inpath '/home/badou/Documents/data/order_data/orders.csv' overwrite into table orders; 2、每个用户有多少个订单 hive> select user_id,count(1) as order_cnt from orders group by user_id order by order_cnt desc limit 10; Total jobs = 2 Launching Job 1 out of 2 Number of reduce tasks not specified. Estimated from input data size: 1 In order to change the average load for a reducer (in bytes): set hive.exec.reducers.bytes.per.reducer=<number> In order to limit the maximum number of reducers: set hive.exec.reducers.max=<number> In order to set a constant number of reducers: set mapred

Linux上安装使用boost入门指导

本小妞迷上赌 提交于 2020-03-20 12:55:07
Data Mining Linux上安装使用boost入门指导 获得boost boost分布 只需要头文件的库 使用boost建立一个简单的程序 准备使用boost二进制文件库 把你的程序链接到boost库 1.获得boost 下载boost_1_46_1.tar.bz2 解压 2.boost分布 boost_1_46_1.........................boost根目录   boost/.....................................所有boost头文件   libs/........................................Tests,.cpps,docs等的库文件 注意:   (1)boost根目录(通常是/usr/local/boost_1_46_1)想到$BOOST_ROOT变量中   (2)编译程序时如果用到boost库,需要指定头文件路径-I$BOOST_ROOT   (3)因为所有头文件都在boost文件夹下,并且头文件都是hpp后缀,所#include形如:     #include <boost/whaever.hpp> 3.只需要头文件的库   绝大多数的boost库都是header-noly的:它们完全由包含模板和inline函数的头文件组成,不需要单独编译和二进制库文件

Spark专业术语定义

霸气de小男生 提交于 2020-03-18 04:46:38
1.1.1. Application/App:Spark应用程序 指的是用户编写的Spark应用程序/代码,包含了Driver功能代码和分布在集群中多个节点上运行的Executor代码。 Spark应用程序,由一个或多个作业JOB组成(因为代码中可能会调用多次Action),如下图所示: 1.1.2. Driver:驱动程序 Spark中的Driver即运行上述Application的Main()函数并且创建SparkContext,其中创建SparkContext的目的是为了准备Spark应用程序的运行环境。 在Spark中由SparkContext负责和ClusterManager通信,进行资源的申请、任务的分配和监控等; 当Executor部分运行完毕后,Driver负责将SparkContext关闭。 通常SparkContext代表Driver,如下图所示: 1.1.3. Cluster Manager:资源管理器 指的是在集群上获取资源的外部服务,常用的有: Standalone,Spark原生的资源管理器,由Master负责资源的分配; Haddop Yarn,由Yarn中的ResourcesManager负责资源的分配; Messos,由Messos中的Messos Master负责资源管理, 如下图所示: 1.1.4. Worker:计算节点

Babel presets stage

纵饮孤独 提交于 2020-03-12 19:31:51
在一些新框架的代码中,常基于es6/7标准来书写代码。鉴于这些标准被没有被浏览器广泛支持,我们一般使用babel来将使用e6/7标准书写的代码降级编译(或者说转译)为浏览器可解析的es3/5代码。 以.babelrc文件配置babel为例,presets预设编译规则(预设的编译插件集合)可以设置stage-0 至 stage-3, stage-0包含了stage-1 至 stage-3,也就是说如果设置为stage-0,stage-1 至 stage-3的编译功能默认都有了。 Stage 0:提案,经过 TC39 成员提出即可 Stage 1:初步尝试 Stage 2:完成初步规范 Stage 3:完成规范以及主流浏览器初步实现 Stage 4:完全完成,将被添加到下一年度进行发布,因此不会存在针对这个阶段的配置项 Stage < 4的提案,不保证都能成为真正的标准并定稿。 stage-3 包括以下插件:   transform-async-to-generator 支持async/await   transform-exponentiation-operator 支持幂运算符语法糖,用两个**表示 stage-2 包括 stage-3 的所有插件,额外还包括以下插件:   syntax-trailing-function-commas 支持尾逗号函数,额...很鸡肋  

Spark常见问题汇总

*爱你&永不变心* 提交于 2020-03-07 17:41:41
原文地址:https://my.oschina.net/tearsky/blog/629201 摘要:    1 、 Operation category READ is not supported in state standby    2 、配置 spark.deploy.recoveryMode 选项为 ZOOKEEPER    3 、多 Master 如何配置    4 、 No Space Left on the device ( Shuffle 临时文件过多)    5 、 java.lang.OutOfMemory, unable to create new native thread    6 、 Worker 节点中的 work 目录占用许多磁盘空间    7 、 spark-shell 提交 Spark Application 如何解决依赖库    8 、Spark在发布应用的时候,出现连接不上master问题    9 、开发spark应用程序(和Flume-NG结合时)发布应用时可能出现org.jboss.netty.channel.ChannelException: Failed to bind to: /192.168.10.156:18800    10 、 spark-shell 找不到hadoop so问题解决    11 、ERROR XSDB6