牛骨文教育服务平台(让学习变的简单)
博文笔记

Spark学习笔记--Spark基础知识

创建时间:2016-09-08 投稿人: 浏览次数:2335
1、RDD表示分布在多个计算节点上的可以并行操作的元素集合,是spark主要的变成抽象。 Spark Streaming 是 Spark 提供的对实时数据进行流式计算的组件 Spark是一个用于集群计算的通用计算框架,因此被应用于各种各样的应用程序
2、从上层来看,每个saprk应用都有一个驱动器程序(driver programmer)来发起集群上的各种并行操作。 驱动器程序通过一个SparkContext对象来访问Spark。这个对象代表对计算集群的一个连接。在shell启动时已经自动创建了一个SparkContext对象。
3、一旦有了SparkContext,你就可以用它来创建RDD。 要执行这些操作,启动器程序一般要管理多个执行器(executor)节点。
4、一旦完成了应用于Spark的链接,接下来就是需要在你的程序中导入Spark包并创建SparkContext。可以先通过SparkConf对象来配置你的应用,然后基于这个SparkConf创建一个SparkContext对象。
5、创建SparkConf的基本方法,传递两个参数:           1、集群URL:告诉Spark如何连接到集群上。           2、应用名:当连接到一个集群式,这个值可以帮助你在集群管理器的用户界面中找到你的应用。
     关闭Spark:调用SparkContext的stop()方法。或直接退出应用。(system.exit(0)/sys.exit())
6、在Spark中,对数据的所有操作不外乎是:  创建RDD、 转化已有的RDD、调用RDD操作进行求值
7、Spark中的RDD是一个不可变的分布式对象集合。每个RDD都被分为多个分区,这些分区运行在集群中的不同节点上。
8、Spark 提供了两种创建RDD的方式:  读取外部数据集、  在驱动器程序中对一个集合进行并行化。  (反斜杠)      转化操作返回的是RD, 行动操作返回的是其他数据类型。
9、当我们调用一个新的行动操作时,整个RDD都会从头开始计算。要避免这种行为,用户可以将中间结果持久化。
10、不应该把RDD看做存放着特定数据的数据集,最好把每个RDD当做我们通过转化操作构建出来的、记录如何计算数据的指令列表。
11、Spark的大部分转化操作和一部分行动操作,都需要依赖用户传递的函数来计算。      在Python中,有三种方式把函数传递给Spark:           1、传递比较短的函数时,可以使用lambda表达式来传递。           2、顶层函数           3、局部函数            使用传递函数时,要小心的是:Python会在你不经意间把函数所在的对象也序列化传出去。当你传递的对象是某个对象的成员,或者包含了某个对象中一个字段的引用时,Spark      就会将整个对象发到工作节点上。
12、常见的transformation和action操作      1、针对各个元素的转化操作:           1.1 : map : 接收一个函数,把这个函数用于RDD中的每一个元素,将函数的返回结果作为结果RDD中对应的一个元素=           1.2  : filter :  接收一个函数,并将RDD中满足该函数的元素放入新的RDD中返回。           1.3  : flatMap  : 每个输入元素生成多个输出元素。      2、伪集合操作 :      尽管RDD本身不是严格意义上的集合,但他也支持许多数学上的集合操作,比如合并和相交操作。           2.1  distinct : 生成一个只包含不同元素的新RDD。需要注意:distinct() 操作的开销很大,因为它需要将所有数据通过网络进行混洗(shuffle),以确保每个元素只有一份。           2.2  union :返回一个包含两个RDD中所有元素的RDD。 若输入的RDD中有重复的数据,union操作也会包含这些重复的数据。           2.3  intersection : 只返回两个RDD中都有的元素,intersecton()在运行时会去掉所有重复的元素(单个RDD内重复元素也会一起移除)。 需要通过网络混洗来发现共有数据。           2.4  subtract  : 接受另一个RDD作为参数,返回一个由只存在在第一个RDD而不存在第二个RDD中的所有元素组成的RDD。  需要数据混洗。              2.5 cartesian : 返回所有可能的(a,b)对,其中a是源RDD中的元素,b是另一个RDD中的元素。      3、行动操作(action)           3.1  reduce :            3.2  fold :             fold 和reduce 都要求函数的返回值类型需要跟我们所操作的RDD中的元素的类型相同。           3.3  aggregate :                 需要三个参数( zeroValue, seqOp, combOp)  zeroValue :返回类型的初始值,  seqOp:     combOp:           3.4 collect : 将整个RDD内容返回。collect()  要求所有数据都必须能一同放到单台机器的内存中。           3.5  take : 返回RDD 中的n个元素, 并且尝试只访问尽量少的分区,因此该惭怍会得到一个不均衡的集合。 需要注意的是,这些操作返回元素的顺序与你预期的可能不一样。           3.6  top ; 从 RDD 中获取前几个元素。           3.7 foreach : 对RDD 中的每个元素进行操作,而不需要把RDD发回本地。      4、有些函数只能用于特定类型的RDD,比如mean()、 variance() 只能在数值RDD上,而join()只能在键值对RDD上。
13、持久化(缓存)      persist()
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。