
spark
彩笔程序猿zxxxx
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Spark Shuffle过程
job:由一个 rdd 的 action 触发的动作,可以简单的理解为,当你需要执行一个 rdd 的 action 的时候,会生成一个 job。Job简单讲就是提交给spark的任务。 stage: stage 是一个 job 的组成单位,就是说,一个 job 会被切分成 1 个或 1 个以上的 stage,然后各个 stage 会按照执行顺序依次执行。简单地说Stage是每一个job处理过程要分为的几个阶段。 task: 即 stage 下的一个任务执行单元,一般来说,一个 ...原创 2020-07-26 16:54:45 · 2286 阅读 · 0 评论 -
Spark SQL解析过程
黄色的是数据结构,蓝色的spark的模块,绿色的是hive matestore 。SQL和DataFrame 进来会先解析成逻辑执行计划,从hive metasotre里面拿一些表、字段的元数据信息,生成一个解析过的执行计划。经过spark的优化器,改变逻辑执行计划的逻辑结构,通过planner生成物理的执行计划。将sql转换成抽象语法书(逻辑执行计划)右边的含义:relation就是一个表的意思,UNresolveRelation是指还没有解析过,现在还没有从元数据那获取信息,不知道表里具原创 2020-07-23 22:17:32 · 1442 阅读 · 0 评论 -
Spark 介绍
RDD:弹性分布式数据集(Resilient Distributed Dataset)。RDD是Spark的最基本抽象,是对分布式内存的抽象使用,实现了以操作本地集合的方式来操作分布式数据集的抽象实现。RDD是Spark最核心的东西,它表示已被分区,不可变的并能够被并行操作的数据集合,不同的数据集格式对应不同的RDD实现。RDD必须是可序列化的。RDD可以cache到内存中,每次对RDD数据集的操作之后的结果,都可以存放到内存中,下一个操作可以直接从内存中输入,省去了MapReduce大量的磁盘IO操作。这原创 2020-07-01 21:13:07 · 253 阅读 · 0 评论 -
Shuffle过程详解及优化
1.MapReduce ShuffleMap是映射,负责数据的过滤分 发;Reduce是规约,负责数据的计算归并。Reduce的数据来源于Map,Map的输出即是Reduce的输入,Reduce需要通过 Shuffle来获取数据。 从Map输出到Reduce输入的整个过程可以广义地称为Shuffle。Shuffle横跨Map端和Reduce端,在Map端包括Spill过程,在Reduc...原创 2018-08-23 00:13:55 · 22674 阅读 · 1 评论 -
YARN的工作机制
YARN是什么全称 Yet Another Resource Negotiator,是一套全新的任务调度与资源管理框架,是 Hadoop 2(当前我们使用的Hadoop版本)的关键组件之一。不同于 Hadoop 1,YARN 不仅支持 MapReduce,还支持各种计算引擎,是一个通用的资源管理器。YARN架构及工作机制下面介绍一下 YARN 的架构以及它是如何工作的。架构...原创 2018-07-21 20:15:47 · 7043 阅读 · 2 评论 -
Spark如何处理数据倾斜
什么是数据倾斜数据倾斜是指我们在并行进行数据处理的时候,由于数据Spark的单个Partition)的分布不均,导致大量的数据集中分不到一台或者某几台计算节点上,导致处理速度远低于平均计算速度,从而拖延导致整个计算过程过慢,影响整个计算性能数据倾斜的危害单个或者某几个task拖延整个任务运行时间,导致整体耗时过大 单个task处理数据过多,很容易导致oom Executor Kil...原创 2018-08-17 20:38:22 · 20717 阅读 · 5 评论 -
Spark调优
一.程序编写调优1.复用RDD我们大家都知道,Spark是通过读取数据形成RDD,从而对数据进行转换和落地的。通常spark读取数据的速度要比数据计算的速度要慢,如果一份数据,程序里已经读取形成了RDD,你想把这个RDD进行多次的处理,直接复用就好,一定不要再次将数据读取形成RDD。这个是用户程序中容易忽略的一点。 2.如果RDD被多次进行转换和执行(transform &...原创 2018-07-30 13:39:41 · 277 阅读 · 0 评论 -
Spark:Java实现分组取Top N
1、源数据如下,取出每班成绩的前三名class1 98class2 90class2 92class1 96class1 100class2 89class2 68class1 81class2 902.实现代码package cn.spark.study.core;import java.util.ArrayList;import java.util.Arrays;impor原创 2017-12-06 20:01:45 · 1366 阅读 · 0 评论 -
Spark:Scala实现Top N
实现代码如下:package cn.spark.study.coreimport org.apache.spark.SparkConfimport org.apache.spark.SparkContextobject Top3 { def main(args:Array[String]):Unit = { val conf = new SparkConf().setAppName("原创 2017-12-06 19:57:05 · 1355 阅读 · 0 评论 -
Spark:Java实现Top N
测试数据32843815111240Java实现代码:package cn.spark.study.core;import java.util.List;import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaPairRDD;import org.apache.spark.api.java.Jav原创 2017-12-06 19:55:33 · 623 阅读 · 0 评论 -
Spark:Scala实现二次排序
测试数据:1 52 43 61 32 1输出结果:1 31 52 12 43 6实现思路与上片文章思路一致,只是改变了实现语言SecondSortKey_12.scalapackage cn.spark.study.coreclass SecondSortKey_12( val first :Int ,val second :Int ) extends Ordered[Se原创 2017-12-06 19:52:08 · 1514 阅读 · 0 评论 -
Spark:Java实现 二次排序
测试数据1 52 43 61 32 1输出结果1 31 52 12 43 6 实现思路:1.实现自定义的key,要实现Ordered接口和Serializable接口,在key中实现自己对多个列的排序算法 2.将包含文本的RDD,映射成key为自定义key,value为文本的JavaPariRDD 3.使用sortByKey算子按照自定义的key进行排序 4.再次映射,剔除原创 2017-12-06 19:47:12 · 1059 阅读 · 1 评论 -
Spark:Scala实现action操作
代码如下package cn.spark.study.coreimport org.apache.spark.SparkConfimport org.apache.spark.SparkContextobject ActionOperation { def main(args: Array[String]){ //reduce() //collect() //count原创 2017-12-06 18:30:53 · 723 阅读 · 0 评论 -
Spark:Java实现Action操作
完整代码如下:package cn.spark.study.core;import java.util.Arrays;import java.util.List;import java.util.Map;import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaPairRDD;import org.apach原创 2017-12-06 18:16:18 · 287 阅读 · 0 评论 -
Spark:用Java和Scala实现WordCount
Java版本package cn.spark.study.core;import java.util.Arrays;import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaPairRDD;import org.apache.spark.api.java.JavaRDD;import org.apache.sp原创 2017-12-06 15:57:11 · 580 阅读 · 0 评论