![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
spark
文章平均质量分 85
mojolang
精品驿站
展开
-
Spark 大/小文件读取优化
问题描述使用Spark写复杂SQL时,我们经常会遇到两个尴尬的情况:表里的单个文件都很大,而且因为record比较小,所以单个文件的record数量巨大。表里每个分区都有成百上千个小文件,单个文件可能只有几条记录对于第一种情况,会导致我们没办法充分利用我们已有的核,所以速度很慢。对于第二种情况,则会大量浪费调度时间。比如你有100万个文件,假设只有100个核,那么需要调度一万轮,每轮调度除了调度自身的消耗,还有很多额外的消耗。在没有shuffle的情况下,会导致写太多文件,本身...转载 2022-02-18 17:12:59 · 2552 阅读 · 0 评论 -
spark-sql执行流程分析
目录spark-sql 架构 sql执行流程正文回到顶部spark-sql 架构图1图1是sparksql的执行架构,主要包括逻辑计划和物理计划几个阶段,下面对流程详细分析。回到顶部sql执行流程总体流程parser;基于antlr框架对 sql解析,生成抽象语法树 变量替换,通过正则表达式找出符合规则的字符串,替换成系统缓存环境的变量SQLConf中的`spark.sql.variable.substitute`,默认是可用的;参考` SparkS.转载 2022-02-11 12:01:55 · 1070 阅读 · 0 评论 -
SparkSQL中的三种Join及其具体实现(broadcast join、shuffle hash join和sort merge join)
1.小表对大表(broadcast join)将小表的数据分发到每个节点上,供大表使用。executor存储小表的全部数据,一定程度上牺牲了空间,换取shuffle操作大量的耗时,这在SparkSQL中称作Broadcast JoinBroadcast Join的条件有以下几个:*被广播的表需要小于 spark.sql.autoBroadcastJoinThreshold 所配置的值,默认是10M (或者加了broadcast join的hint)*基表不能被广播,比如 left outer转载 2022-02-11 11:59:25 · 2319 阅读 · 0 评论 -
Hive与spark优化之小文件问题及其解决方案
小文件是如何产生的1.动态分区插入数据,产生大量的小文件,从而导致map数量剧增。2.reduce数量越多,小文件也越多(reduce的个数和输出文件是对应的)。3.数据源本身就包含大量的小文件。小文件问题的影响1.从Hive的角度看,小文件会开很多map,一个map开一个JVM去执行,所以这些任务的初始化,启动,执行会浪费大量的资源,严重影响性能。2.在HDFS中,每个小文件对象约占150byte,如果小文件过多会占用大量内存。这样NameNode内存容量严重制约了集群的扩展。转载 2022-02-09 14:17:10 · 2257 阅读 · 0 评论 -
Spark Shuffle 中 JVM 内存使用及配置详情
JVM 內存使用架构剖析 Spark 1.6.x 和 Spark 2.x 的 JVM 剖析 Spark 1.6.x 以前 on Yarn 计算内存使用案例 Spark Unified Memory 的运行原理和机制引言Spark 从1.6.x 开始对 JVM 的内存使用作出了一种全新的改变,Spark 1.6.x 以前是基于静态固定的JVM内存使用架构和运行机制,如果你不知道 Spark 到底对 JVM 是怎么使用,你怎么可以很有信心地或者是完全确定地掌握和控制数据的缓存空间呢,所以掌握Spar转载 2022-02-09 08:32:16 · 486 阅读 · 0 评论 -
第一章 Spark 性能调优
大数据性能调优的本质编程的时候发现一个惊人的规律,软件是不存在的!所有编程高手级别的人无论做什么类型的编程,最终思考的都是硬件方面的问题!最终思考都是在一秒、一毫秒、甚至一纳秒到底是如何运行的,并且基于此进行算法实现和性能调优,最后都是回到了硬件!在大数据性能的调优,它的本质是硬件的调优!即基于CPU(计算)、Memory(存储)、IO-Disk/ Network(数据交互)基础上构建算法和性能调优!我们在计算的时候,数据肯定是存储在内存中的。磁盘IO怎么去处理和网络IO怎么去优化。Sp..转载 2022-02-08 15:54:45 · 2748 阅读 · 0 评论 -
Spark 踩坑记:数据库(Hbase+Mysql)
前言在使用Spark Streaming的过程中对于计算产生结果的进行持久化时,我们往往需要操作数据库,去统计或者改变一些值。最近一个实时消费者处理任务,在使用spark streaming进行实时的数据流处理时,我需要将计算好的数据更新到hbase和mysql中,所以本文对spark操作hbase和mysql的内容进行总结,并且对自己踩到的一些坑进行记录。Spark Streaming持久化设计模式DStreams输出操作print:打印driver结点上每个Dstream中的前10个转载 2021-08-24 15:04:08 · 484 阅读 · 0 评论 -
Spark的算子的分类
从大方向来说,Spark 算子大致可以分为以下两类: 1)Transformation 变换/转换算子:这种变换并不触发提交作业,完成作业中间过程处理。 Transformation 操作是延迟计算的,也就是说从一个RDD 转换生成另一个 RDD 的转换操作不是马上执行,需要等到有 Action 操作的时候才会真正触发运算。 2)Action 行动算子:这类算子会触发 SparkContext 提交 Job 作业。 Action 算子会触发 Spark 提交作业(J...转载 2021-07-26 17:57:45 · 734 阅读 · 0 评论 -
漫画全面解释Spark企业调优点
一:资源配置一般企业中,物理机器的cpu:内存基本上都是1:4+,比如机器24core,一般有128GB及以上内存;48core,一般有256GB及以上内存。减去系统及hdfs所需core,2个吧;减去系统的2-4GB,减去存储hdfs的相关的假设20GB吧(hbase需要的更多点,但是一般hbase会有独立集群)。24core,128GB的机器应该还剩还有20core,100GB。这种情况下,很明显,你1core对应5GB内存才能最大化利用机器,否则往往cpu没了,内存还...转载 2021-04-28 17:10:46 · 189 阅读 · 0 评论