自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 Spark踩坑vlog——避免使用两个字段进行外连接时产生笛卡尔积的一种办法

        日常开发中遇到了一种需要使用两个字段对两张表进行外连接的场景,但是在这种情况下,会产生笛卡尔积,造成数据量疯狂增长,于是本文中使用union all替代这种情况下的join,来解决这个问题。业务场景        1.文章表中有“纯文字”、“图片”、“长视频”、“短视频”四类,其中,需要修正指标“阅读量”,此指标为新添字段,为了与

2021-10-06 16:31:39 463

原创 流式数据计算

    做流式数据处理有一段时间了,Flink、Spark Streaming或者一些未开源的厂内计算框架都用过,简单写一写流处理相关的思想总结吧。流处理思想        不管是微批还是纯流,思想不同,不仅框架底层处理方式不同,在代码中处理过程也有很大的不同。比如:Spark Streaming采用微批的思想,实际数据处理时,面向的处理对象是一个数据集,对这个数据集的操作方式就有点像

2021-09-06 23:13:53 187

原创 Spark-在循环中使用DataFrame

背景    在业务处理中,经常处理相同的逻辑,只不过每次处理时数据的指标范围不同而已;因此使用循环处理,每次传入不同的参数值,是提高代码质量的必要手段。代码val times = Map( param_key1 -> param_value1, param_ke2 -> param_value2, param_ke3 -> param_value3, param_ke4 -> param_value4)spark.sql(s"

2021-07-25 21:32:03 1076 1

原创 Spark踩坑vlog——使用外部存储减轻join时数据负担

背景        此次需要将10张表[A、B、C、D、E、F、G、H、I、J]的数据union与表∂中的一个字段进行join,以达到筛选数据的目的;其中表A的数据量约为320亿,其余9个表各自数据量约为20亿,表∂的数据量约为900万;        资源使用情况上升至100 executor-nums * 3 executor-core *

2021-07-10 22:58:36 180 2

原创 Spark踩坑vlog——join时shuffle的大坑

业务背景    项目中将两个表进行join,一个大表,一个小表,在平时200 executor-core * 20G executor-memory的资源下跑的挺好的,随着业务数据的增加,有一天,这个任务就跑不出来了,重试5次每次都失败,最后任务报错;    报错时,俩表情况如下:大表的数据量约为278亿,1TB左右,另一个的数据量约为480万,4GB左右;通过DAG图发现,任务卡在俩表join的那个stage上;报错信息

2021-07-01 22:59:01 455 2

原创 Spark流处理中的广播变量

背景        前段时间做的是一个流式项目里,场景为:对于流式数据,使用过滤规则进行实时过滤并产出结果数据。流式数据为源源不断的IP,筛选出在合格IP集合中的数据,传输到下游消息中间件中。技术选型        上游数据从消息中间件中读取,处理采用Spark Streaming,下游也采用消息中间件。广播变量广播变量的适用场景&nbs

2021-06-20 17:33:58 275

原创 Protobuf结合Spark Structured Streaming使用

背景    在项目开发中对流式数据使用Spark Structured Streaming进行处理,处理流程为:消息中间件(source) -> Spark Structured Streaming(work) -> AFS(sink)。    在source->work这个过程中,消息以protobuf形式存储,其中 Spark Structured Streaming接受到的数据格式为Array[Byt

2021-05-09 17:52:09 350

原创 Spark踩坑vlog-推测执行spark.speculation

Spark踩坑vlog-推测执行spark.speculation踩坑背景踩坑原因解决原因教训踩坑背景流程如下所示:1.使用SparkSQL获取到了一个DataFrame;2.然后map这个DataFrame,调用GET接口,获得了IDs作为一个新的DatdaFrame;3.最后再map这个DataFrame,在map中调用Post接口,将最终结果放到接口中。踩坑原因因为比较懒,所以在spark-submit的时候,脚本直接复制了另外一个Spark作业的提交脚本,但是万万没想到的是:这个脚本

2021-03-30 23:19:02 404

原创 Hive表优化

Hive优化

2020-12-20 17:47:02 68

原创 Flink-KeyedProcessFuntion中ValueState<Boolean>与Boolean的区别

Flink-KeyedProcessFuntion中ValueState<Boolean>与Boolean的区别背景在项目开发中,遇到如下场景:将数据按照业务逻辑分组,接下来的所有计算以组为单位;当第一条数据传入时,以当前数据的时间对应天的结束时间为定时触发时间,做定时。下一次的定时与上一次定时的时间间隔为86400s;数据结构与备用数据/*** @author DSH12138* @since 2020-11-02* 原始数据结构* */@Data@NoArgsConst

2020-11-02 17:16:56 327

原创 Spark[四]——Spark并行度

Spark[四]——Spark并行度    Spark并行度指在Spark作业中,各个Stage中task的数量,也就代表了Spark作业在各个阶段的并行度。    合理设置并行度可以从以下几个方面考虑:1.充分利用任务资源,即并行度略高于分配给CPU资源数( = num-Executors * 每个Executor使用的core);2.平均每个Partition的大小不要过于小,一般在百兆左右最合适;3.根据实际机器分配给

2020-10-29 14:59:19 621

原创 Spark[三]——Spark对内存的管理[On-Heap Memory、Off-Heap Memory、Storage、Execution、Other]

Spark[三]——Spark对内存的管理[On-Heap Memory、Off-Heap Memory、Storage、Execution、Other]​ 由于Driver的内存管理较为简单,内存管理主要对Executor的内存管理进行探讨。一、堆内(On-Heap Memory)和堆外(Off-Heap Memory)内存规划​ Executor作为一个JVM进程,Executor的内存管理建立在JVM的内存管理之上。Spark对堆内内存进行JVM内存管理,引入了堆外内存,使之可以直接

2020-10-29 14:57:30 1171

原创 Spark[二]——Spark的组件们[Application、Job、Stage、TaskSet、Task]

Spark[二]——Spark的组件们[Application、Job、Stage、TaskSet、Task]一、Application就是用户编写的Spark应用程序,提交到Spark后,Spark为Application分配资源,将程序转换并执行;其中,一个Application包含多个Job;二、Job​ 由Action算子触发生成的由一个或多个Stage组成的计算作业;​ 这些Action算子主要包括:reduce、collect、count、first、take、takeSa

2020-10-29 14:42:36 552

原创 Spark[一]——Spark的进程们[Driver、Master、Worker、Executor]

Spark[一]——Spark的进程们[Driver、Master、Worker、Executor]一、背景知识1.进程进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行过程,是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的载体,进程包括程序、数据集合和进程控制块三部分。程序用于描述进程要完成的功能,是控制进程执行的指令集;数据集合石程序在执行时所需要的数据和工作区;程序控制块包含进程的描述信息和控制信息,是进程存在的唯一标识。2.线程线程是程序执行中一个单一的顺序执行控制流

2020-10-29 14:39:46 2794 2

原创 Spark TroubleShooting——【笔记三】

Spark TroubleShooting——【尚硅谷课程笔记三】[课程链接]——https://www.bilibili.com/video/av54322051?p=50一、控制reduce端缓冲大小避免OOM    在Shuffle过程中,reduce端task并不是等到map端task将其全部写入磁盘后再去拉取,而是map端写一点数据,reduce端的task就会拉取一小部分数据,然后立即进行后面的聚合、算子函数的使用等操作。  &

2020-10-29 14:34:18 106

原创 Spark数据倾斜——【笔记二】

Spark数据倾斜——【尚硅谷课程笔记二】[课程链接]——https://www.bilibili.com/video/av54322051?p=50一、问题描述    Spark中数据倾斜问题主要是指Shuffle过程中出现的数据倾斜问题,由于不同的key对应不同的数据量导致不同的task所处理的数据量不同的问题。    注意,要区分开数据倾斜与数据过量这两种情况,数据倾斜式指少数task被分配了绝大多数的数据,因此少

2020-10-29 14:33:10 95

原创 Spark性能调优——【笔记一】

Spark性能调优——【尚硅谷课程笔记一】[课程链接]——https://www.bilibili.com/video/av54322051?p=50一、常见性能调优1.最优资源配置名称说明–num-executors配置executor的数量,数量增加,同时执行的task数量也增加,并行度增加–driver-memory配置Driver内存(影响不大)–executor-memory配置每个Executor的内存大小–executor-cores配置每

2020-10-29 11:41:45 445

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除