
Spark详解
1.初识Spark,Spark编程核心RDD,Spark算子类别详解 2.Spark持久化算子,Spark集群搭建 3.SparkRDD的宽窄依赖
Jeremy_Lee123
AI Everywhere!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
内存计算系统之Spark基础
一、Spark概述1.1. 什么是Spark(官网:http://spark.apache.org)1.2. 为什么要学Spark1.3.Spark特点二、Spark集群安装2.1. 机器部署2.2. 下载Spark安装包2.3. 配置Spark三、执行Spark程序3.1. 执行第一个spark程序3.2. 启动Spark Shel...原创 2019-07-31 22:30:40 · 787 阅读 · 0 评论 -
内存计算系统之Spark计算模型RDD算子
一、弹性分布式数据集RDD1.1. RDD概述1.2.创建RDD(两种方式)1.3.RDD编程API二、RDD的依赖关系2.1. 窄依赖2.2. 宽依赖2.3. Lineage2.4. RDD的缓存三、DAG的生成一、弹性分布式数据集RDD1.1. RDD概述什么是RDD?RDD(Resilient Distributed Da...原创 2019-08-01 00:14:47 · 700 阅读 · 0 评论 -
k8s中部署spark集群
基于kubernetes部署的两种方式直接使用kubernetes作为集群管理器(Cluster Manager),类似与mesos和yarn,使用方式可以看running-on-kubernetes。但是这个部署方式,一是还不成熟,不推荐在生产环境使用。第二是要求k8s版本大于1.6,但我这边版本1.5.1,线上在用,不太想升级,而spark只是想搭起来玩玩... 第二种方式是standa...原创 2020-02-27 00:16:43 · 6260 阅读 · 2 评论 -
Spark RDD之三种创建方式
使用三种方式创建RDD使用SparkContext的parallelize()方法序列化本地数据集合创建RDD。 使用外界的数据源创建RDD,比如说本地文件系统,分布式文件系统HDFS等等。 通过将已有RDD使用transform算子操作产生新的RDD。三种方式创建RDD--Java/** * 三种方法创建RDD演示Java版本 */public class CreateRD...原创 2020-02-26 22:17:34 · 2292 阅读 · 0 评论 -
Spark集群安装部署
部署顺序:环境准备 Hadoop安装 Spark安装一、环境准备参考:https://blog.csdn.net/lixinkuan328/article/details/100856388安装软件版本为:JDK: jdk-8u181-linux-x64.tar.gzHadoop: hadoop-3.1.2.tar.gzSpark: spark-2.3.1-bin-ha...原创 2019-09-17 20:58:37 · 1373 阅读 · 0 评论 -
Spark之编程核心RDD
一、前述Spark是基于内存的计算框架,性能要优于Mapreduce,可以实现hadoop生态圈中的多个组件,是一个非常优秀的大数据框架,是Apache的顶级项目。One stack rule them all 霸气。但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce...原创 2019-09-20 23:12:59 · 591 阅读 · 0 评论 -
Spark RDD之转换算子详解
一、前述Spark中默认有两大类算子,Transformation(转换算子),懒执行。action算子,立即执行,有一个action算子 ,就有一个job。通俗些来说由RDD变成RDD就是Transformation算子,由RDD转换成其他的格式就是Action算子。二、常用Transformation算子假设数据集为此:1、filter: 过滤符合条件的记录数,t...原创 2019-09-20 23:37:32 · 1827 阅读 · 0 评论 -
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...原创 2019-09-20 23:53:41 · 1316 阅读 · 0 评论 -
Spark算子之aggregateByKey详解
一、基本介绍rdd.aggregateByKey(3, seqFunc, combFunc) 其中第一个函数是初始值3代表每次分完组之后的每个组的初始值。seqFunc代表combine的聚合逻辑每一个mapTask的结果的聚合成为combinecombFunc reduce端大聚合的逻辑ps:aggregateByKey默认分组举一个简单的在生产环境中的一段代码:有...原创 2019-09-20 23:51:51 · 1585 阅读 · 0 评论 -
Spark RDD之行动算子详解
一、前述Action类算子也是一类算子(函数)叫做行动算子,如foreach,collect,count等。Transformations类算子是延迟执行,Action类算子是触发执行。一个application应用程序(就是我们编写的一个应用程序)中有几个Action类算子执行,就有几个job运行。二、具体原始数据集: 1、count:返回数据集中的元素数。会在结果计算完...原创 2019-09-20 23:48:58 · 2077 阅读 · 0 评论 -
Spark RDD之控制算子详解
一、前述Spark中控制算子也是懒执行的,需要Action算子触发才能执行,主要是为了对数据进行缓存。控制算子有三种,cache,persist,checkpoint,以上算子都可以将RDD持久化,持久化的单位是partition。cache和persist都是懒执行的。必须有一个action类算子触发执行。checkpoint算子不仅能将RDD持久化到磁盘,还能切断RDD之间的依赖关系。...原创 2019-09-20 23:49:01 · 796 阅读 · 0 评论 -
Spark之宽窄依赖和Stage的划分
一、前述RDD之间有一系列的依赖关系,依赖关系又分为窄依赖和宽依赖。Spark中的Stage其实就是一组并行的任务,任务是一个个的task 。二、具体细节窄依赖父RDD和子RDD partition之间的关系是一对一的。或者父RDD一个partition只对应一个子RDD的partition情况下的父RDD和子RDD partition关系是多对一的。不会有shuffle的...原创 2019-09-20 23:55:37 · 1046 阅读 · 0 评论 -
Spark之运行模式及提交参数
目录Spark-Submit提交参数一、Standalone模式两种提交任务方式1.1、Standalone-client提交任务方式1.2、Standalone-cluster提交任务方式二、Yarn模式两种提交任务方式2.1、yarn-client提交任务方式2.2、yarn-cluster提交任务方式Spark-Submit提交参数Local:多用于本地测...原创 2019-09-19 00:44:08 · 1021 阅读 · 0 评论 -
Spark之YARN运行模式
一、官方文档http://spark.apache.org/docs/latest/running-on-yarn.html二、配置安装安装hadoop:需要安装HDFS模块和YARN模块,HDFS必须安装,spark运行时要把jar包存放到HDFS上。 安装Spark:解压Spark安装程序到一台服务器上,修改spark-env.sh配置文件,spark程序将作为YARN的客户端用...原创 2019-07-31 23:48:35 · 626 阅读 · 0 评论 -
Spark之资源调度和任务调度
一、前述Spark的资源调度和任务调度是个很重要的模块,只要搞懂原理,才能具体明白Spark是怎么执行的,所以尤其重要。同时,本文分别介绍了粗粒度和细粒度模式的资源申请。二、流程图(Standalone-client提交任务方式)Spark资源调度和任务调度的流程:1、启动集群后,Worker节点会向Master节点汇报资源情况,Master掌握了集群资源情况。 2、当Spa...原创 2019-09-20 23:56:48 · 781 阅读 · 0 评论 -
Spark之广播变量和累加器
Spark中因为算子中的真正逻辑是发送到Executor中去运行的,所以当Executor中需要引用外部变量时,需要使用广播变量。累机器相当于统筹大变量,常用于计数,统计。一、广播变量注意事项:1、能不能将一个RDD使用广播变量广播出去?--不能,因为RDD是不存储数据的。可以将RDD的结果广播出去。 2、广播变量只能在Driver端定义,不能在Executor端定义。 3...原创 2019-10-09 22:28:44 · 539 阅读 · 0 评论 -
Spark之Shuffle机制及其文件寻址详解
一、SparkShuffle概念reduceByKey会将上一个RDD中的每一个key对应的所有value聚合成一个value,然后生成一个新的RDD,元素类型是<key,value>对的形式,这样每一个key对应一个聚合起来的value。问题:聚合之前,每一个key对应的value不一定都是在一个partition中,也不太可能在同一个节点上,因为RDD是分布式的弹性的数据集...原创 2019-10-10 23:33:13 · 1535 阅读 · 0 评论 -
Spark之内存管理及Shuffle调优
一、Spark内存管理Spark执行应用程序时,Spark集群会启动Driver和Executor两种JVM进程,Driver负责创建SparkContext上下文,提交任务,task的分发等。Executor负责task的计算任务,并将结果返回给Driver。同时需要为需要持久化的RDD提供储存。Driver端的内存管理比较简单,这里所说的Spark内存管理针对Executor端的内存管...原创 2019-10-11 00:30:43 · 751 阅读 · 0 评论 -
Spark之性能调优
Spark中调优大致分为以下几种 ,代码调优,数据本地化,内存调优,SparkShuffle调优,调节Executor的堆外内存。一、代码调优1、避免创建重复的RDD,尽量使用同一个RDD2、对多次使用的RDD进行持久化如何选择一种最合适的持久化策略?默认情况下,性能最高的当然是MEMORY_ONLY,但前提是你的内存必须足够足够大,可以绰绰有余地存放下整个RDD的所有数据。因...原创 2019-10-11 01:08:05 · 792 阅读 · 0 评论 -
Spark之数据倾斜问题解决
一、数据倾斜种类MR:在shuffle之后,某个 reduce task 处理数据相对于其他task来说 数据量大 Hive:Hive表中某列下的key非常多,其他key相对少,未来使用这张表join 或者group by 这列时就会有数据倾斜 Spark:某个task处理的某个分区的数据量非常大,其他的task处理的数据量少数据倾斜问题是大数据中的头号问题,所以解决数据清洗尤为重要,...原创 2019-10-11 23:03:31 · 616 阅读 · 0 评论 -
内存计算系统之SQL
目录一、Spark SQL概述1.1. 什么是Spark SQL1.2. Spark SQL二、DataFrames2.1. 什么是DataFrames2.2.创建DataFrames2.3.DataFrame常用操作三、以编程方式执行Spark SQL查询3.1. 编写Spark SQL查询程序3.2. 通过反射推断Sche...原创 2019-08-02 00:06:21 · 916 阅读 · 0 评论 -
Spark之SparkSQL和DataFrame
目录一、SparkSQL介绍二、DataFrame三、创建DataFrame的几种方式3.1、读取json格式的文件3.2、读取json格式的RDD/DataSet3.3.1、读取RDD创建DataFrame(CreateDFFromRDDWithReflect)3.3.2、读取RDD创建DataFrame(CreateDFFromRDDWithStruct)3....原创 2019-10-11 23:46:48 · 1156 阅读 · 0 评论 -
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路径):<?xml version="1.0" encoding="UTF-8...原创 2019-10-13 17:21:37 · 1043 阅读 · 0 评论 -
Spark之自定义UDF和UDAF,开窗函数的应用
一、概述二、自定义UDF函数可以自定义类实现UDFX接口。package com.bjsxt.sparksql.udf_udaf;import java.util.ArrayList;import java.util.Arrays;import java.util.List;import org.apache.spark.SparkConf;import org.a...原创 2019-10-13 17:53:12 · 845 阅读 · 0 评论 -
内存计算系统之Streaming
本章目标掌握Spark Streaming的原理 熟练使用Spark Streaming完成流式计算任务 一、Spark Streaming介绍1.1. Spark Streaming概述1.2. Spark Streaming特点1.3. Spark与Storm的对比二、DStream2.1.什么是DStream2.2...原创 2019-08-02 01:15:53 · 617 阅读 · 0 评论 -
SparkStream之读取socket数据
一、简介SparkStreaming是流式处理框架,是Spark API的扩展,支持可扩展、高吞吐量、容错的实时数据流处理,实时数据的来源可以是:Kafka, Flume, Twitter, ZeroMQ或者TCP sockets,并且可以使用高级功能的复杂算子来处理流数据。例如:map,reduce,join,window 。最终,处理后的数据可以存放在文件系统,数据库等,方便实时展现。...原创 2019-10-13 23:04:12 · 1703 阅读 · 0 评论 -
SparkStream之Transformation类算子
一、概述SparkStreaming中的算子分为两类,一类是Transformation类算子,一类是OutPutOperator类算子。Transformation类算子updateStateByKey,reduceByKeyAndWindow,transform OutPutOperator类算子print,foreachRDD,saveAsTextFile二、transfo...原创 2019-10-13 23:53:15 · 765 阅读 · 0 评论 -
SparkStream之OutPutOperator类算子
一、概述SparkStreaming中的算子分为两类,一类是Transformation类算子,一类是OutPutOperator类算子。Transformation类算子updateStateByKey,reduceByKeyAndWindow,transform OutPutOperator类算子print,foreachRDD,saveAsTextFile二、foreachR...原创 2019-10-13 23:53:20 · 586 阅读 · 1 评论 -
SparkStream之与Kafka整合
一、receiver模式receiver模式原理图receiver模式理解: 在SparkStreaming程序运行起来后,Executor中会有receiver tasks接收kafka推送过来的数据。数据会被持久化,默认级别为MEMORY_AND_DISK_SER_2,这个级别也可以修改。receiver task对接收过来的数据进行存储和备份,这个过程会有节点之间的数据传输。...原创 2019-10-13 23:57:19 · 1503 阅读 · 0 评论