Spark
Spark
嘻哈吼嘿呵
这个作者很懒,什么都没留下…
展开
-
Spark、Flink 、Big Data、Java实用文章
目录一、Spark二、Flink一、SparkApache Spark在海致大数据平台中的优化实践 Spark/Flink广播实现作业配置动态更新 Spark面对OOM问题的解决方法及优化总结 Spark 动态资源分配(Dynamic Resource Allocation) 解析 基于SparkStreaming+Kafka+HBase实时点击流案例 H...原创 2019-12-12 10:27:38 · 203 阅读 · 0 评论 -
Spark踩坑记
1、spark读写mysql,mysql 可以设置是否区分大小写,spark区分大小写原创 2019-08-14 17:20:45 · 165 阅读 · 0 评论 -
Spark SQL读数据库时不支持某些数据类型的问题
在大数据平台中,经常需要做数据的ETL,从传统关系型数据库RDBMS中抽取数据到HDFS中。之前开发数据湖新版本时使用Spark SQL来完成ETL的工作,但是遇到了 Spark SQL 不支持某些数据类型(比如ORACLE中的Timestamp with local Timezone)的问题。一、系统环境 Spark 版本:2.1.0.cloudera1 JDK 版本:Jav...转载 2019-11-28 10:17:21 · 1843 阅读 · 1 评论 -
Spark 读写Hive分桶表
I have a number of tables (with 100 million-ish rows) that are stored as external Hive tables using Parquet format. The Spark job needs to join several of them together, using a single column, with...转载 2019-10-22 14:53:35 · 2359 阅读 · 0 评论 -
十、Spark Troubleshooting
一控制 reduce 端缓冲大小以避免 OOM在 Shuffle 过程, reduce 端 task 并不是等到 map 端 task 将其数据全部写入磁盘后再去拉取, 而是 map 端写一点数据, reduce 端 task 就会拉取一小部分数据, 然后立即进行后面的聚合、算子函数的使用等操作。reduce 端 task 能够拉取多少数据,由 reduce 拉取数据的缓冲区 buffer 来...原创 2019-10-11 23:38:37 · 164 阅读 · 0 评论 -
九、Spark 数据倾斜
目录一、 聚合原数据1. 避免 shuffle 过程二、 过滤导致倾斜的 key三、 提高 shuffle 操作中的 reduce 并行度1. reduce 端并行度的设置2. reduce 端并行度设置存在的缺陷四、 使用随机 key 实现双重聚合五、 将 reduce join 转换为 map join1. 核心思路:2. 不适用场景分析:六、 sa...原创 2019-10-10 22:08:07 · 191 阅读 · 0 评论 -
八、Spark性能调优——JVM 调优
对于 JVM 调优,首先应该明确, full gc/minor gc,都会导致 JVM 的工作现场停止工作,即 stop the world。一、降低 cache 操作的内存占比1. 静态内存管理机制val conf = new SparkConf().set("spark.storage.memoryFraction", "0.4")根据 Spark 静态内存管理机制, 堆内...原创 2019-10-10 00:06:15 · 134 阅读 · 0 评论 -
七、Spark性能调优——Shuffle 调优
目录一、调节 map 端缓冲区大小二、调节 reduce 端拉取数据缓冲区大小三、调节 reduce 端拉取数据重试次数四、调节 reduce 端拉取数据等待间隔五、调节 SortShuffle 排序操作阈值一、调节 map 端缓冲区大小val conf = new SparkConf().set("spark.shuffle.file.buffer", "6...原创 2019-10-10 00:03:25 · 276 阅读 · 0 评论 -
六、Spark性能调优——算子调优
目录一、mapPartition二、freachPartition优化数据库操作三、filter 与 coalesce结合四、repartition 解决 SparkSQL 低并行度问题五、reduceByKey 本地聚合一、mapPartition普通的 map 算子对 RDD 中的每一个元素进行操作, 而 mapPartitions 算子对 RDD中每一个分区进行操...原创 2019-10-09 23:39:41 · 250 阅读 · 0 评论 -
五、Spark性能优化——调节本地化等待时长
val conf = new SparkConf().set("spark.locality.wait", "6")Spark 作业运行过程中, Driver 会对每一个 stage 的 task 进行分配。 根据 Spark的 task 分配算法, Spark 希望 task 能够运行在它要计算的数据算在的节点(数据本地化思想), 这样就可以避免数据的网络传输。通常来说, task 可能...原创 2019-10-09 23:18:35 · 195 阅读 · 0 评论 -
四、Spark性能调优——Kryo序列化
默认情况下, Spark 使用 Java 的序列化机制。 Java 的序列化机制使用方便,不需要额外的配置,在算子中使用的变量实现 Serializable 接口即可, 但是, Java 序列化机制的效率不高,序列化速度慢并且序列化后的数据所占用的空间依然较大。Kryo 序列化机制比 Java 序列化机制性能提高 10 倍左右, Spark 之所以没有默认使用 Kryo 作为序列化类库,是因为...原创 2019-10-09 23:11:39 · 229 阅读 · 0 评论 -
三、Spark性能调优——并行度调节
val conf = new SparkConf().set("spark.default.parallelism", "500")Spark 作业中的并行度指各个 stage 的 task 的数量。如果并行度设置不合理而导致并行度过低, 会导致资源的极大浪费,例如, 20个 Executor,每个 Executor 分配 3 个 CPU core, 而 Spark 作业有 40 个 ...原创 2019-10-09 23:09:06 · 381 阅读 · 0 评论 -
二、Spark性能调优——RDD优化
1 RDD 复用在对 RDD 进行算子时, 要避免相同的算子和计算逻辑之下对 RDD 进行重复的计算,优化前如图优化后如图2 RDD 持久化在 Spark 中,当多次对同一个 RDD 执行算子操作时, 每一次都会对这个 RDD以之前的父 RDD 重新计算一次,这种情况是必须要避免的,对同一个 RDD 的重复计算是对资源的极大浪费,因此, 必须对多次使用的 RDD 进行持...原创 2019-10-09 23:06:35 · 249 阅读 · 0 评论 -
一、Spark性能调优——最优资源配置
Spark 性能调优的第一步,就是为任务分配更多的资源, 在一定范围内,增加资源的分配与性能的提升是成正比的, 实现了最优的资源配置后, 在此基础上再考虑进行后面论述的性能调优策略。资源的分配在使用脚本提交 Spark 任务时进行指定, 标准的 Spark 任务提交脚本:/usr/opt/modules/spark/bin/spark-submit \--class com.atgui...原创 2019-10-09 23:01:27 · 272 阅读 · 0 评论 -
Spark Shuffle 原理
一、Shuffle 的核心要点1、ShuffleMapStage 与 FinalStage在划分 stage 时,最后一个 stage 称为 FinalStage,它本质上是一个 ResultStage对象,前面的所有 stage 被称为 ShuffleMapStage。ShuffleMapStage 的结束伴随着 shuffle 文件的写磁盘。ResultStage 基本上对...原创 2019-10-09 22:53:13 · 134 阅读 · 0 评论 -
Spark 内存管理
在执行 Spark 的应用程序时, Spark 集群会启动 Driver 和 Executor 两种JVM 进程,前者为主控进程,负责创建 Spark 上下文,提交 Spark 作业(Job),并将作业转化为计算任务(Task),在各个 Executor 进程间协调任务的调度,后者负责在工作节点上执行具体的计算任务,并将结果返回给 Driver,同时为需要持久化的 RDD 提供存储功能。由于 Dr...原创 2019-09-29 21:05:28 · 145 阅读 · 0 评论 -
独孤九剑-Spark面试80连击(下)
订正:第37题题目应为:说说Spark的WAL(预写日志)机制?Spark SQL和Structured Streaming会另起专题介绍,欢迎持续关注。39. Spark的UDF?因为目前 Spark SQL 本身支持的函数有限,一些常用的函数都没有,比如 len, concat...etc 但是使用 UDF 来自己实现根据业务需要的功能是非常方便的。Spark SQL UDF ...转载 2019-09-13 15:58:42 · 345 阅读 · 0 评论 -
独孤九剑-Spark面试80连击(上)
场景描述:这是一个Spark的面试题合集。是我自己作为面试者和作为面试官都会被问到或者问到别人的问题,这个总结里面有大量参考了网上和书上各位老师、大佬的一些原文答案,只是希望可以给出更好的回答,一般上我都会把原文链接贴上,如有侵权请联系删除!再次感谢各位提供的资料,如果你有一定的 Spark 基础,但是经常在面试中表现不佳,那么这篇总结应该非常适合你!关键词:Spark 面试题...转载 2019-09-13 15:56:11 · 430 阅读 · 0 评论 -
spark核心技术原理透视一(Spark运行原理)
一、Spark专业术语定义1、Application:Spark应用程序指的是用户编写的Spark应用程序,包含了Driver功能代码和分布在集群中多个节点上运行的Executor代码。Spark应用程序,由一个或多个作业JOB组成,如下图所示:2、Driver:驱动程序Spark中的Driver即运行上述Application的Main()函数并且创建S...转载 2019-09-12 11:19:00 · 366 阅读 · 0 评论 -
Spark作业执行基本原理
目录一、相关术语及基本作业流程二、作业提交三、划分Stage四、提交Stage五、提交任务六、执行任务七、获取执行结果一、相关术语及基本作业流程1、相关术语 作业(Job):RDD中由行动操作所生成的一个或者多个调度阶段 调度阶段(Stage):每个作业会因为RDD之间的依赖关系拆分成多组任务集合,称为调度阶段,也叫做任务集合(TaskSe...原创 2019-08-09 00:38:03 · 322 阅读 · 0 评论 -
Spark基本架构及消息通信原理
参考《图解Spark:核心技术与案例实战》Spark 2.0版本一、Spark基本架构Application:Spark应用程序 Driver:Spark中的Driver即运行Application的main函数并且创建SparkContext,其中创建SparkContext为Spark的上下文。在Spark中由SparkContext负责与ClusterM...原创 2019-08-06 23:38:57 · 750 阅读 · 0 评论