为了账号安全,请及时绑定邮箱和手机立即绑定

Spark从零开始

Terby JAVA开发工程师
难度初级
时长 2小时18分
学习人数
综合评分9.80
56人评价 查看评价
9.8 内容实用
9.7 简洁易懂
9.9 逻辑清晰
  • RDDS
    查看全部
    0 采集 收起 来源:Rdds介绍

    2018-08-07

  • RDDs之SparkContext sc
    查看全部
    0 采集 收起 来源:Rdds介绍

    2018-08-07

  • RDD之Driver program
    查看全部
    0 采集 收起 来源:Rdds介绍

    2018-08-07

  • Spark

    1. Spark简介

      1. Spark是什么:

        1. Spark是一个快速且通用的集群计算平台

    2. Spark的特点

      1. Spark是快速的

        1. Spark扩充了流行的MapReduce计算模型

        2. Spark是基于内存的计算 

      2. Spark是通用的

        1. Spark的设计容纳了其他分布式系统拥有的功能,批处理,迭代式计算,交互查询和流处理等。

        2. 优点:降低了维护成本

      3. Spark是高度开放的

        1. Spark提供了Python, Java, Scala, SQL的API和丰富的内置库。

        2. Spark和其他的大数据工具整合的很好,包括Hadoop, Kafka等

    3. Spark历史

      1.  诞生于2009年,加州大学伯克利分校RAD实验室的一个研究项目,最初是基于Hadoop MapReduce

      2. 发现MapReduce在迭代式计算和交互式上抵消,引入内存存储

      3. 2010年3月份Spark开源

      4. 2011年AMP实验室在Spark上开发高级组件,像Spark Streaming

      5. 2013年转移到了Apache下,不久便成为顶级项目了。

    4. Spark组件:Spark包含多个紧密集成的组件

      1. Spark Core: 

        1. 包含Spark的基本功能,包含任务调度,内存管理,容错机制等。

        2. 内部定义了RDDs(弹性分布式数据集)

        3. 提供了很多API来创建和操作这些RDDs。

        4. 应用场景,为其他组件提供底层的服务。

      2. Spark SQL:

        1. 是Spark处理结构化数据的库,就像Hive SQL,MySQL一样。

        2. 应用场景,企业中用来做报表统计。

      3. Spark Streaming:

        1. 是实施数据流处理的组件,类似Storm。

        2. Spark Streaming提供了API来操作实施流数据。

        3. 应用场景,企业中用来从Kafka接受数据做实时统计。

      4. Mlib:

        1. 一个包含通用机器学习功能的包,Machine learning lib.

        2. 包含分类,聚类,回归等,还包括模型评估,和数据导入。

        3. Milb提供的上面这些方法,都支持集群上的横向扩展。

        4. 应用场景,机器学习。

      5. Graphx:

        1. 是处理图的库(例如,社交网络图),并进行图的并行计算。

        2. 像Spark Streaming, Spark SQL一样, 它也集成了RDD API。

        3. 它提供了各种图的操作,和常用的图算法,例如PangeRank算法。

        4. 应用场景,图计算

      6. Cluster Managers:

        1. 就是集群管理,Spark自带一个集群管理是单独调度器。

        2. 常见集群管理包括Hadoop YARN, Apache Mesos。

      7. 紧密集成的优点:

        1. Spark底层优化了,基于Spark底层的组件,也得到了相应的优化。

        2. 紧密集成,节省了各个组件组合使用时的部署,测试等时间。

        3. 向Spark增加新的组件时,其他组件,可立刻享用新组件的功能。

    5. Spark与Hadoop的比较

      1. Hadoop应用场景

        1. 离线处理

        2. 对时效性要求不高

      2. Spark应用场景

        1. 时效性要求高的场景

        2. 机器学习等领域

      3. 比较

        1. Doug Cutting(Hadoop之父)的观点

          1. 这是生态系统,每个组件都有其作用,各善其职即可。

          2. Spark不具有HDFS的存储能力,要借助HDFS等持久化数据。

          3. 大数据将会孕育出更多的新技术。

    6. Spark安装

      1. Spark运行环境

        1. Spark 是scala写的,运行在JVM上,所以运行环境Java7+

        2. 如果使用Python API,需要安装Python 2.6+或者Python3.4+。

        3. Spark 1.6.2 -Scala 2.10  Spark 2.0.0 -Scala 2.11

      2. Spark下载:

        1. 下载地址:http://spark.apache.org/downloads.html

        2. 搭Spark不需要Hadoop,如有hadoop集群,可下载相应的版本解压。

      3. Spark目录

        1. bin:包含用来和Spark交互的可执行未见,如Spark shell。

        2. core, streaming, python, ...包含主要组件的源代码。

        3. examples包含一些单机的Spark jobs,可以单机运行的例子。

      4. Spark的Shell

        1. Spark的shell使你能够处理分布在集群上的数据。

        2. Spark把数据加载到节点的内存中,因此分布式处理可在秒级完成。

        3. 快速使迭代式计算,实时查询,分析一般能够在shell中完成。

        4. Spark提供了Python shells和Scala shells。

        5. Python Shell:

          1. bin/pyspark

        6. Scala Shell

          1. bin/spark-shell

          2. ```

            1. var lines = sc.textFile("../testfile/helloSpark")

            2. lines.conut()

            3. lines.first()

            4. 修改日志级别log4j.rootCategory=WARN, console

          3. ```

      5. Spark开发环境的搭建

        1. Scala安装:

          1. 下载地址:https://www.scala-lang.org/

        2. IDEA下载

        3. 插件安装:Scala

        4. 搭建开发环境常遇到的问题

          1. 网络问题,导致sbt插件下载失败,解决方法,找一个好的网络环境。

          2. 版本匹配问题:Scala2.10.5, jdk1.8

        5. IntelliJ IDEA 常用设置

      6. 开发第一个Spark程序

        1. 配置ssh无密登陆:

          1. ssh-keygen

          2. .ssh目录下cat xxx_rsa.pub > authorized_keys

          3. chmod 600 authorized_keys 

        2. WordCount:

          1. 创建一个Spark Context

          2. 加载数据

          3. 把每一行分割成单词

          4. 转换成pairs并且计数

    7. RDDs介绍

      1. Driver program:

        1. 包含程序的main()方法,RDDs的定义和操作。

        2. 它管理很多节点,我们称作executors。

      2. SparkContext:

        1. Driver programs通过SparkContext对象访问Spark。

        2. SparkContext对象代表和一个集群的连接。

        3. 在Shell中SparkContext自动创建好了,就是sc。

      3. RDDs:

        1. Resilient distributed datasets(弹性分布式数据集,简称RDDs)

        2. 这些RDDs,并行的分布在整个集群中。

        3. RDDs是Spark分发数据和计算的基础抽象类。

        4. 一个RDD是一个不可改变的分布式集合对象。

        5. Spark中,所有的计算都是通过RDDs的创建,转换,操作完成的。

        6. 一个RDD内部有很多partition(分片)组成的。

      4. 分片:

        1. 每个分片包括一部分数据,partitions可在集群不同节点上计算。

        2. 分片是Spark并行处理的单元,Spark顺序的,并行的处理分片。

      5. RDDs的创建方法:

        1. 把一个存在的集合传给SparkContext的parallelize()方法,测试用

          1. val rdd = sc.parallelize(Array(1, 2, 2, 4), 4)

          2. 第1个参数:待并行化处理的集合

          3. 第2个参数:分区个数

        2. 加载外部数据集

          1. val rddText = sc.textFile("helloSpark.txt")

      6. Scala的基础知识

        1. Scala的变量声明

          1. 创建变量是val/var

            1. val:变量值是不可修改的,类似java final。

            2. var:变量值定义完是可以修改的。

        2. Scala的匿名函数和类型推断

          1. lines.filter(line => line.contains("world")),定义一个匿名函数,接受line.

          2. 使用line这个Strig类型的变量上的contains方法,并且返回结果

          3. line不需要制定类型,会自动推断

    8. RDD基本操作 Transformation

      1. Transformations介绍:

        1. 转换

        2. 从之前的RDD构建一个新的RDD,像map() 和 filter()。

      2. 逐元素Transformation

        1. map(): map()接收函数,把函数应用到RDD的每一个元素,返回新的RDD。

        2. filter(): filter()接受函数,返回只包含满足filter()函数的元素的新RDD。

        3. flatMap(): flatMap()对每个输入元素,输出多个输出元素。flat压扁的意思,将RDD中的元素压扁后返回一个新的RDD。

      3. 集合运算

        1. RDDs支持数学集合的计算,例如并集,交集计算。

    9. RDD基本操作 Action

      1. Action介绍:在RDD上计算出来一个结果。把结果返回给driver program或保存在文件系统,count(), save()

      2. collect(): 返回RDD的所有元素。

      3. count(): 计数。

      4. countByValue(): 返回一个map表示唯一元素出现的个数。

      5. take(num): 返回几个元素。

      6. top(num): 返回前几个元素。

      7. takeOrdered(num)(ordering): 返回基于提供的排序算法的前几个元素。

      8. takeSample(withReplacement, num, [seed]): 取样例。

      9. reduce(fun): 合并RDD中元素。

      10. fold(zero)(fun): 与reduce()相似提供zero value。

      11. aggregate(zeroValue)(seqOp, combOp): 与fold()相似,返回不同类型。

      12. foreach(fun): 对RDD的每个元素作用函数,什么也不返回

    10. RDDs的特性

      1. RDDs的血统关系图:

        1. Spark维护着RDDs之间的依赖关系和创建关系,叫做血统关系图

        2. Spark使用血统关系图来计算每个RDD的需求和恢复丢失的数据

      2. 延迟计算(Lazy Evaluation):

        1. Spark对RDDs的计算是,他们第一次使用action操作的时候。

        2. 这种方式在处理大数据的时候特别有用,可以减少数据的传输。

        3. Spark内部记录metadata表明transformations操作已经被响应了。

        4. 加载数据也是延迟计算,数据只有在必要的时候,才会被加载进去。

      3. RDD.persist(): 持久化

        1. 默认每次在RDDs上面进行action操作时,Spark都重新计算RDDs,如果像重复利用一个RDD,可以使用RDD.persist()。

        2. unpersist()方法从缓存中移除。

        3. 例子RDD.persist()

    11. KeyValue对RDDs

      1. 创建KeyValue对RDDs

        1. 使用map()函数,返回key/value对,例如,包含数行数据的RDD,把每行数据的第一个单词作为keys

        2. KeyValue对RDDs的Transformations

          1. reduceByKey(fun): 把相同Key的结合。

          2. groupByKey(): 把相同的key的values分组。

          3. combineByKey(): 把相同key的结合,使用不同的返回类型。

          4. mapValues(fun): 函数作用于pairRDD的每个元素,key不变

          5. flatMapValues(fun): 符号化的时候使用

          6. keys: 仅返回keys

          7. values: 仅返回values

          8. sortByKey(): 按照key排序的RDD

        3. combineByKey(createCombiner, mergeValue, mergeCombiners, partitioner)

          1. 最常用的基于key的聚合函数,返回的类型可以与输入类型不一样,许多基于key的聚合函数都用到了它,像groupByKey()

          2. 原理,便利partition中的元素,元素的key,要么之前见过的,要么不是。如果是新元素,使用我们提供的createCombiner()函数,如果是这个partition中已经存在的key,就会使用mergeValue()函数,合计每个partition的结果的时候,使用mergeCombiners()函数

    12. Spark基础课程总结

      1. Spark介绍。

      2. Spark安装,开发环境搭建,WordConut程序开发和运行。

      3. RDDs介绍,Transformations,Actions

      4. RDDs的特性,KeyValue对RDDs

    13. 后续课程:

      1. Spark架构

      2. Spark运行过程

      3. Spark程序部署


    查看全部
    5 采集 收起 来源:Spark课程总结

    2018-07-25

  • reduce
    查看全部
  • Prest
    查看全部
  • 开发第一个Spark程序放到集群上运行

    查看全部
    0 采集 收起 来源:Rdds介绍

    2018-07-20

  • scala基础知识

    变量声明:

    创建变量必须使用val /var

        区别:val:变量值不可修改,一旦分配不能重新指向别的值

                  var:分配后,可以指向类型相同的值

    查看全部
    0 采集 收起 来源:Rdds介绍

    2018-07-13

  • rdds创建方法

    查看全部
    0 采集 收起 来源:Rdds介绍

    2018-07-13

  • 分片:

    每个分片包含一部分数据,partitions可在集群不同节点上计算。

    分片是spark并行处理的单元,spark顺序的、并行的处理分片

    查看全部
    0 采集 收起 来源:Rdds介绍

    2018-07-13

  • 一个RDD是一个不可改变的分布式集合对象。

    Spark中,所有的计算都是通过RDDs的创建、转换和操作完成的。

    一个RDD内部由很多partitions(分片)组成

    查看全部
    0 采集 收起 来源:Rdds介绍

    2018-07-13

  • RDDs介绍:

    RDDs: Resilient distributed datasets(弹性分布式数据集,简称RDDs)

    RDDs是Spark分发数据和计算的基础抽象类

    查看全部
    0 采集 收起 来源:Rdds介绍

    2018-07-13

  • spark context:

    Driver programs 通过sparkContext对象访问spark

    SparkContext对象代表和一个集群的连接

    在shell中sparkContext自动创建好了,就是sc


    查看全部
    0 采集 收起 来源:Rdds介绍

    2018-07-13

  • Driver program:

    包含程序的main()方法,RDDs的定义和操作。

    它管理很多节点,我们称作executors

    查看全部
    0 采集 收起 来源:Rdds介绍

    2018-07-13

  • 环境搭建,spark和Scala版本匹配

    查看全部

举报

0/150
提交
取消
课程须知
1、 简单Linux的操作
老师告诉你能学到什么?
1、了解Spark到底是什么 2、了解Spark和Hadoop的区别 3、了解Spark的基础知识和概念 4、掌握Spark RDD的基本操作和特性 5、掌握Spark程序的开发和部署流程

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!