spark
星空下的那个人影
不像程序员的程序猿
展开
-
SparkStreaming 有几种方式消费 Kafka 中的数据(与 kafka 集成的方式)
SparkStreaming 有哪几种方式消费 Kafka 中的数据,它们之间的区别是什么?原创 2022-06-19 22:58:35 · 526 阅读 · 0 评论 -
手写 Spark-WordCount
手写wordcount原创 2022-06-18 19:37:26 · 337 阅读 · 0 评论 -
spark RDD 行动算子
spark rdd action 算子原创 2022-06-18 19:27:12 · 205 阅读 · 0 评论 -
Spark 任务如何调优
spark 调优原创 2022-06-05 00:59:44 · 834 阅读 · 0 评论 -
Spark Shuffle调优
Shuffle 调优原创 2022-06-04 11:54:05 · 215 阅读 · 0 评论 -
Spark JVM调优总结
JVM调优原创 2022-06-04 10:12:23 · 266 阅读 · 0 评论 -
调优之前与调优之后性能的详细对比(例如调整 map 个数,map 个数之前多少、之后多少,有什么提升)
这里举个例子。比如我们有几百个文件,会有几百个 map 出现,读取之后进行 join 操作,会比较慢。这个时候我们可以进行 coalesce 操作,比如 240个 map,我们合成 60 个map,也就是 窄依赖。这样再shuffle,过程产生的文件数会大大减少。提高 join 的时间性能。...原创 2022-05-27 16:47:27 · 166 阅读 · 0 评论 -
如何使用Spark实现TopN的获取(描述思路或使用伪代码)
方法1:a. 按照 key 对数据进行聚合(groupByKey)b. 将 value 转换为数组,利用 scala 的 sortBy 或者 sortWith 进行排序(mapValues)注意:当数据量太大时,会导致OOM。val rddData1 = sparkSession.parallelize(Array(("sivela", 15),("sivela", 18),("sivela", 16),("Alice", 15),("Bob", 18)))val rddGroup = rdd.原创 2022-05-26 19:47:01 · 540 阅读 · 0 评论 -
请列举会引起 shuffle 过程的 spark 算子,并简述功能
byKey类的操作:比如 reduceByKey、groupByKey、sortByKey 等;因为要对一个key,进行聚合操作,那么肯定要保证集群中,所有节点上的,相同的 key,一定是到同一个节点上进行处理;a. reduceByKey :将数据按照相同的 key 对 value进行聚合;b. groupByKey :将数据按照相同的 key 对 value进行分组;c. aggregateByKey :将数据按照不同的规则进行分区内计算和分区间计算;d. foldByKey:当分区内计算规则.原创 2022-05-25 12:30:13 · 722 阅读 · 1 评论 -
简述 SparkSQL中RDD、DataFrame、DataSet 三者的区别与联系?
RDDRDD:是弹性分布式数据集**,是Spark中最基本的数据抽象,代表一个不可变,可分区、里面的元素可并行计算的集合。优点:a. 编译时类型安全:编译时就能检查出类型错误;b. 面向对象的编程风格:直接通过类名点的方式来操作数据;缺点:a. 序列化和反序列化的性能开销:无论是集群间的通信,还是IO操作都需要对对象的结构和数据进行序列化和反序列化;b. GC (垃圾回收)的性能开销,频繁的创建和销毁对象,势必会增加GC(程序进行GC时,所有任务都是暂停);DataFrameDa..原创 2022-05-24 12:16:02 · 805 阅读 · 0 评论 -
简述 SparkStreaming 窗口函数的原理
窗口函数就是在原来定义的 SparkStreaming 计算批次大小的基础上再次进行封装,每次计算多个批次的数据,同时还需要传递一个滑动步长的参数,用来设置当次计算任务完成之后下一次从什么地方开始计算;图中 time1 就是 SparkStreaming 计算批次大小,虚线框以及实线大框就是窗口大小,必须为批次的整数倍。虚线框到大实线框的距离(相隔多少批次),就是滑动步长。...原创 2022-05-19 21:15:01 · 641 阅读 · 0 评论 -
你是怎么理解Spark,它的特点是什么?
Spark 是一个基于内存的,用于大规模数据处理(离线计算、实时计算、快速查询(交互式查询))的统一分析引擎。它内部的组成模块,包括 SparkCore,SparkSQL,SparkStreaming,SparkMLlib,SparkGraghx等…它的特点:快Spark 计算速度是 MapReduce 计算速度的10-100倍易用MapReduce 支持1种计算模型,Spark 支持更多的计算模型通用Spark 能够进行离线计算、交互式查询(快速查询)、实时计算、机器学习、图计算兼容原创 2022-05-16 16:34:14 · 884 阅读 · 0 评论 -
简述Spark中共享变量(广播变量和累加器)的基本原理与用途
累加器是spark中提供的一种分布式的变量机制,其原理类似于mapreduce,即分布式的改变,然后聚合这些改变。累加器的一个常见用途是在调试时对作业执行过程中的事件进行计数;广播变量是每个机器上缓存一份,不可变,只读的,相同的变量,该节点每个任务都能访问,起到节省资源和优化的作用。它通常用来高效分发较大的对象。...原创 2022-05-10 12:35:09 · 1260 阅读 · 0 评论 -
当Spark涉及到数据库的操作时,如何减少Spark运行中的数据库连接数?
使用 foreachPartition 代替 foreach ,在 foreachPartition 内获取数据库的连接。原创 2022-05-09 11:31:04 · 815 阅读 · 1 评论 -
简述Spark中的缓存(cache和persist)与checkpoint机制,并指出两者的区别和联系
位置Persist 和 Cache 将数据保存在内存或者磁盘中,CheckPoint 将数据保存在HDFS;生命周期Persist 和 Cache 程序结束后会被清除或手动调用 unpersist 方法,CheckPoint 永久存储不会被删除;RDD依赖关系Persist 和 Cache,不会丢掉RDD间的依赖关系,CheckPoint 会斩断依赖链。...原创 2022-05-06 18:52:48 · 1136 阅读 · 0 评论 -
Repartition和Coalesce的关系与区别
关系:两者都是用来 改变RDD的partition数量 的,repartition 底层调用的就是 Coalesce方法:coalesce(numPartitions, shuffle = true)区别:repartition 一定会发生 shuffle,coalesce 根据传进来的参数来判断是否发生 shuffle。一般情况下增大rdd的partition数量使用repartition,减少partition数量时使用coalesce。...原创 2022-05-05 20:21:41 · 967 阅读 · 0 评论 -
Spark常用算子reduceByKey与groupByKey的区别,哪一种更有优势?
reduceByKey: 按照key进行聚合,在shuffle之前就有combine(预聚合)操作,返回结果是RDD[k,v];groupByKey: 按照key进行分组,直接进行shuffle;所以,在实际开发过程中,reduceByKey比groupByKey,更建议使用,但是需要注意是否会影响业务逻辑。...原创 2022-05-04 23:32:06 · 1006 阅读 · 0 评论 -
spark的作业提交流程
Spark的任务提交方式实际上有两种,分别是YarnClient模式和YarnCluster模式。YarnClient模式在 YARN Clinet 模式下,Driver 在任务提交的本地机器上运行;Driver 启动后会和 ResourceManager 通讯申请启动 ApplicationMaster;随后 ResourceManager 分配 container,在合适的 NodeManager 上 启动 ApplicationMaster,此时的 ApplicationMaster 的原创 2022-05-03 13:07:18 · 1728 阅读 · 1 评论 -
简述Spark的宽窄依赖,以及Spark如何划分Stage,每个Stage又根据什么决定task个数?
窄依赖:——类比于独生子女父RDD的一个分区只会被子RDD的一个分区依赖;宽依赖:——类比于多生父RDD的一个分区会被子RDD的多个分区依赖(涉及到shuffle);Stage是如何划分的?根据RDD之间的依赖关系的不同将job划分成不同的Stage,遇到一个宽依赖则划分一个stage;每个Stage又根据什么决定task个数?Stage是一个TaskSet,将Stage根据分区数划分成一个个的Task。...原创 2022-04-29 21:20:53 · 953 阅读 · 0 评论 -
如何理解Spark中血统(RDD)的概念?它的作用是什么?
概念:RDD是弹性分布式数据集,是Spark中最基本的数据抽象,代表一个不可变,可分区、里面的元素可并行计算的集合。作用: 提供了一个抽象的数据模型,将具体的应用逻辑表达为一系列转换操作(函数)。另外不同RDD之间的转换操作之间还可以形成依赖关系,进而实现管道化,从而避免了中间结果的存储,大大降低了数据复制、磁盘IO和序列化开销,并且还提供了更多的API(map/filter/groupBy…)。RDD在Lineage依赖方面分为两种Narrow Dependencies与Wide Dependenci原创 2022-04-28 16:28:35 · 1789 阅读 · 0 评论 -
Hadoop与Spark的不同
原创 2022-04-27 16:58:06 · 127 阅读 · 0 评论 -
Spark提交作业的参数
executors-cores:每个executor使用的内核数,默认是1,官方建议2-5个,我们企业是4个num-executors:启动executors的数量,默认为2;executor-memory:executor内存大小,默认是1G;driver-cores:driver使用内核数,默认是1;driver-memory:driver内存大小,默认是512M提交任务的样式:spark-submit \ --master local[5] \ --driver-cores .原创 2022-04-27 16:34:47 · 721 阅读 · 0 评论 -
Spark有几种部署方式?
Local:运行在一台机器上,通常是练手或者测试环境;Standalone:构建一个Master+Slaves的资源调度集群,Spark任务提交到Master运行。是Spark自身的一个调度系统;Yarn:客户端直接连接Yarn,不需要额外构建Spark集群。有yarn-client和yarn-cluster两种模式,主要区别在于:Driver程序的运行节点(yarn-client的在客户端、yarn-cluster的在yarn集群资源中);Mesos:国内大环境比较少用。...原创 2022-04-26 20:41:07 · 730 阅读 · 0 评论