Spark汇总
L先生AI课堂
李虎,联想集团PCSD业务UDS平台推荐算法团队开发负责人,曾获2018-2019年度联想集团中国区优秀员工。在联想内部,做过多次企业内训和技术支持,并在北京线下技术沙龙分享会上作为演讲嘉宾分享算法实战应用效果,拥有丰富的线上,线下培训经验。对机器学习,深度学习算法建模,推荐系统,大数据有多年的实际经验。CSDN博客专家,著有大白话算法系列,以通俗生动的方式讲解人工智能前沿算法。愿景是打造全网AI最通俗教学,赠人玫瑰,手有余香,在人工智能前行的路上一起前行,以通俗简洁详细的方式,让每一位热爱着深入其中。空间有形、梦想无限!加油!
展开
-
从0到1搭建spark集群---企业集群搭建
今天分享一篇从0到1搭建Spark集群的步骤,企业中大家亦可以参照次集群搭建自己的Spark集群。一。下载Spark安装包可以从官网下载,本集群选择的版本是spark-1.6.0-bin-hadoop2.6在官网中找到对应的链接即可http://spark.apache.org/downloads.html或者用本人云盘下载地址 附上链接如下https://pan.baidu.co原创 2017-12-16 01:28:25 · 1030 阅读 · 0 评论 -
【Spark篇】---Spark中Action算子
一、前述Action类算子也是一类算子(函数)叫做行动算子,如foreach,collect,count等。Transformations类算子是延迟执行,Action类算子是触发执行。一个application应用程序(就是我们编写的一个应用程序)中有几个Action类算子执行,就有几个job运行。二、具体 原始数据集: 1、count返回数据集中的元素数。会在结果计算完成后回收到Driver...原创 2018-02-09 16:49:27 · 2414 阅读 · 0 评论 -
【Spark篇】--Spark中的宽窄依赖和Stage的划分
一、前述RDD之间有一系列的依赖关系,依赖关系又分为窄依赖和宽依赖。Spark中的Stage其实就是一组并行的任务,任务是一个个的task 。二、具体细节 窄依赖父RDD和子RDD partition之间的关系是一对一的。或者父RDD一个partition只对应一个子RDD的partition情况下的父RDD和子RDD partition关系是多对一的。不会有shuffle的产生。父RDD的一个分...原创 2018-02-09 16:48:24 · 2456 阅读 · 1 评论 -
【Spark篇】---Spark中transformations算子二
一、前述今天继续整理几个Transformation算子如下:mapPartitionWithIndexrepartitioncoalescegroupByKeyzipzipWithIndex二、具体细节mapPartitionWithIndex 类似于mapPartitions,除此之外还会携带分区的索引值。java代码:package com.spark.spark.tra...原创 2018-02-09 16:47:05 · 400 阅读 · 0 评论 -
【Spark篇】---Spark中广播变量和累加器
一、前述Spark中因为算子中的真正逻辑是发送到Executor中去运行的,所以当Executor中需要引用外部变量时,需要使用广播变量。累机器相当于统筹大变量,常用于计数,统计。二、具体原理1、广播变量广播变量理解图 注意事项1、能不能将一个RDD使用广播变量广播出去? 不能,因为RDD是不存储数据的。可以将RDD的结果广播出去。2、 广播变量只能在Driver端定义,不能在Ex...原创 2018-02-09 16:46:17 · 553 阅读 · 0 评论 -
【Spark篇】---SparkSQL中自定义UDF和UDAF,开窗函数的应用
一、前述SparkSQL中的UDF相当于是1进1出,UDAF相当于是多进一出,类似于聚合函数。开窗函数一般分组取topn时常用。二、UDF和UDAF函数1、UDF函数java代码:SparkConf conf = new SparkConf();conf.setMaster("local");conf.setAppName("udf");JavaSparkContext sc = new J...原创 2018-02-09 16:44:35 · 858 阅读 · 0 评论 -
【Spark篇】---SparkSQL初始和创建DataFrame的几种方式
一、前述 1、SparkSQL介绍 Hive是Shark的前身,Shark是SparkSQL的前身,SparkSQL产生的根本原因是其完全脱离了Hive的限制。SparkSQL支持查询原生的RDD。 RDD是Spark平台的核心概念,是Spark能够高效的处理大数据的各种场景的基础。能够在Scala中写SQL语句。支持简单的SQL语法检查,能够在Scala中写Hive语...原创 2018-02-09 16:42:59 · 1490 阅读 · 0 评论 -
【Spark篇】---SparkStream初始与应用
一、前述SparkStreaming是流式处理框架,是Spark API的扩展,支持可扩展、高吞吐量、容错的实时数据流处理,实时数据的来源可以是:Kafka, Flume, Twitter, ZeroMQ或者TCP sockets,并且可以使用高级功能的复杂算子来处理流数据。例如:map,reduce,join,window 。最终,处理后的数据可以存放在文件系统,数据库等,方便实时展现。二、S...原创 2018-02-09 16:37:36 · 585 阅读 · 0 评论 -
【Spark篇】---SparkStreaming算子操作transform和updateStateByKey
一、前述今天分享一篇SparkStreaming常用的算子transform和updateStateByKey。可以通过transform算子,对Dstream做RDD到RDD的任意操作。其实就是DStream的类型转换。为SparkStreaming中每一个Key维护一份state状态,通过更新函数对该key的状态不断更新。二、具体细节 1、transform 是一个transfo...原创 2018-02-09 16:36:33 · 1382 阅读 · 0 评论 -
【Spark篇】---Spark资源调度和任务调度
一、前述Spark的资源调度是个很重要的模块,只要搞懂原理,才能具体明白Spark是怎么执行的,所以尤其重要。自愿申请的话,本文分粗粒度和细粒度模式分别介绍。二、具体Spark资源调度流程图: Spark资源调度和任务调度的流程: 1、启动集群后,Worker节点会向Master节点汇报资源情况,Master掌握了集群资源情况。 ...原创 2018-02-09 16:47:25 · 3084 阅读 · 0 评论 -
【Spark篇】---SparkSQL on Hive的配置和使用
一、前述Spark on Hive: Hive只作为储存角色,Spark负责sql解析优化,执行。二、具体配置1、在Spark客户端配置Hive On Spark 在Spark客户端安装包下spark-1.6.0/conf中创建文件hive-site.xml: 配置hive的metastore路径<configuration> <...原创 2018-02-09 16:42:26 · 6266 阅读 · 8 评论 -
【Spark篇】---Spark中控制算子
一、前述 Spark中控制算子也是懒执行的,需要Action算子触发才能执行,主要是为了对数据进行缓存。控制算子有三种,cache,persist,checkpoint,以上算子都可以将RDD持久化,持久化的单位是partition。cache和persist都是懒执行的。必须有一个action类算子触发执行。checkpoint算子不仅能将RDD持久化到磁盘,还能切断RDD之间的依赖关系。 二、...原创 2018-02-09 16:49:49 · 523 阅读 · 0 评论 -
【Spark篇】---Spark中Transformations转换算子
一、前述Spark中默认有两大类算子,Transformation(转换算子),懒执行。action算子,立即执行,有一个action算子 ,就有一个job。通俗些来说由RDD变成RDD就是Transformation算子,由RDD转换成其他的格式就是Action算子。 二、常用Transformation算子 假设数据集为此: 1、filter 过滤符合条件的记录数,true保留,fal...原创 2018-02-09 16:50:09 · 816 阅读 · 0 评论 -
【Spark篇】---Spark初始
一、前述Spark是基于内存的计算框架,性能要优于Mapreduce,可以实现hadoop生态圈中的多个组件,是一个非常优秀的大数据框架,是Apache的顶级项目。One stack rule them all 霸气。但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法二...原创 2018-02-09 16:50:27 · 446 阅读 · 0 评论 -
Spark算子篇 --Spark算子之combineByKey详解
一。概念rdd.combineByKey(lambda x:"%d_" %x, lambda a,b:"%s@%s" %(a,b), lambda a,b:"%s$%s" %(a,b))三个参数(都是函数)第一个参数:给定一个初始值,用函数生成初始值。第二个参数:combinbe聚合逻辑。第三个参数:reduce端聚合逻辑。二。代码from pyspark.conf imp原创 2018-01-07 00:03:54 · 447 阅读 · 0 评论 -
Spark算子篇 --Spark算子之aggregateByKey详解
一。基本介绍rdd.aggregateByKey(3, seqFunc, combFunc) 其中第一个函数是初始值3代表每次分完组之后的每个组的初始值。seqFunc代表combine的聚合逻辑每一个mapTask的结果的聚合成为combinecombFunc reduce端大聚合的逻辑ps:aggregateByKey默认分组二。代码from pyspa原创 2018-01-07 00:04:45 · 807 阅读 · 0 评论 -
【Spark篇】---Spark中内存管理和Shuffle参数调优
一、前述Spark内存管理Spark执行应用程序时,Spark集群会启动Driver和Executor两种JVM进程,Driver负责创建SparkContext上下文,提交任务,task的分发等。Executor负责task的计算任务,并将结果返回给Driver。同时需要为需要持久化的RDD提供储存。Driver端的内存管理比较简单,这里所说的Spark内存管理针对Executor端的内存管理。...原创 2018-02-09 16:45:05 · 1060 阅读 · 0 评论 -
【Spark篇】---Spark中Shuffle机制,SparkShuffle和SortShuffle
一、前述Spark中Shuffle的机制可以分为HashShuffle,SortShuffle。SparkShuffle概念reduceByKey会将上一个RDD中的每一个key对应的所有value聚合成一个value,然后生成一个新的RDD,元素类型是<key,value>对的形式,这样每一个key对应一个聚合起来的value。问题:聚合之前,每一个key对应的value不一定都是在...原创 2018-02-09 16:45:31 · 564 阅读 · 0 评论 -
【Spark篇】---Spark中Master-HA和historyServer的搭建和应用
一、前述 本节讲述Spark Master的HA的搭建,为的是防止单点故障。Spark-UI 的使用介绍,可以更好的监控Spark应用程序的执行。二、具体细节1、Master HA 1、Master的高可用原理 Standalone集群只有一个Master,如果Master挂了就无法提交应用程序,需要给Master进行高可用配置,Master的高可用可以...原创 2018-02-09 16:45:57 · 414 阅读 · 0 评论 -
【Spark篇】---Spark中资源和任务调度源码分析与资源配置参数应用
一、前述Spark中资源调度是一个非常核心的模块,尤其对于我们提交参数来说,需要具体到某些配置,所以提交配置的参数于源码一一对应,掌握此节对于Spark在任务执行过程中的资源分配会更上一层楼。由于源码部分太多本节只抽取关键部分和结论阐述,更多的偏于应用。二、具体细节 1、Spark-Submit提交参数Options:--master MASTER_URL, 可以是spark://host:por...原创 2018-02-09 16:46:40 · 1191 阅读 · 0 评论 -
【Spark篇】---Spark中yarn模式两种提交任务方式
一、前述Spark可以和Yarn整合,将Application提交到Yarn上运行,和StandAlone提交模式一样,Yarn也有两种提交任务的方式。二、具体 1、yarn-client提交任务方式配置 在client节点配置中spark-env.sh添加Hadoop_HOME的配置目录即可提交yarn 任务,具体步骤如下: ...原创 2018-02-09 16:48:06 · 8427 阅读 · 0 评论 -
【Spark篇】---Spark中yarn模式两种提交任务方式
一、前述Spark可以和Yarn整合,将Application提交到Yarn上运行,和StandAlone提交模式一样,Yarn也有两种提交任务的方式。二、具体 1、yarn-client提交任务方式配置 在client节点配置中spark-env.sh添加Hadoop_HOME的配置目录即可提交yarn 任务,具体步骤如下: ...原创 2018-02-09 16:48:44 · 919 阅读 · 0 评论 -
【Spark篇】--Spark中Standalone的两种提交模式
一、前述Spark中Standalone有两种提交模式,一个是Standalone-client模式,一个是Standalone-master模式。二、具体 1、Standalone-client提交任务方式提交命令 ./spark-submit --master spark://node01:7077 --class org.apache.spark.exa...原创 2018-02-09 16:49:05 · 2695 阅读 · 0 评论 -
【Spark篇】---SparkStreaming中算子中OutPutOperator类算子
一、前述SparkStreaming中的算子分为两类,一类是Transformation类算子,一类是OutPutOperator类算子。Transformation类算子updateStateByKey,reduceByKeyAndWindow,transformOutPutOperator类算子print,foreachRDD,saveAsTextFile本文讲解OutPutO...原创 2018-03-07 12:04:00 · 362 阅读 · 0 评论