Introduction to Big Data with Apache Spark——week2课题笔记

SparkContext

Introduction to Big Data with Apache Spark——week2课题笔记_第1张图片


RDD

Introduction to Big Data with Apache Spark——week2课题笔记_第2张图片


Introduction to Big Data with Apache Spark——week2课题笔记_第3张图片



Introduction to Big Data with Apache Spark——week2课题笔记_第4张图片


Introduction to Big Data with Apache Spark——week2课题笔记_第5张图片



Introduction to Big Data with Apache Spark——week2课题笔记_第6张图片

代码:



直接使用python的数据类型创造:

Introduction to Big Data with Apache Spark——week2课题笔记_第7张图片

从外部文件创造:
Introduction to Big Data with Apache Spark——week2课题笔记_第8张图片


Transformations

Introduction to Big Data with Apache Spark——week2课题笔记_第9张图片

代码:

Introduction to Big Data with Apache Spark——week2课题笔记_第10张图片

Introduction to Big Data with Apache Spark——week2课题笔记_第11张图片

Action

Introduction to Big Data with Apache Spark——week2课题笔记_第12张图片




代码:

Introduction to Big Data with Apache Spark——week2课题笔记_第13张图片

Introduction to Big Data with Apache Spark——week2课题笔记_第14张图片


Cache

Introduction to Big Data with Apache Spark——week2课题笔记_第15张图片


Introduction to Big Data with Apache Spark——week2课题笔记_第16张图片


Spark流程

Introduction to Big Data with Apache Spark——week2课题笔记_第17张图片


其他注意


1. key-value类型

Introduction to Big Data with Apache Spark——week2课题笔记_第18张图片

Introduction to Big Data with Apache Spark——week2课题笔记_第19张图片

Introduction to Big Data with Apache Spark——week2课题笔记_第20张图片

Introduction to Big Data with Apache Spark——week2课题笔记_第21张图片


2. 共享变量



2.1 广播变量

其实就是定义了一个只读的全局变量,给所有机子缓存一份。

共享变量允许程序员将一个只读的变量缓存在每台机器上,而不是让每个任务随带一个变量的副本。广播变量为在每个节点上提供海量的输入数据集提供了一种高效的方式。Spark会尝试使用高效饿广播算法来减少分发广播变量的通信消耗。

广播变量通过调用SparkContext.broacase(v)创建, v是一个变量。广播变量是v的封装, v的值可以通过value方法访问。

代码:

broadcastVar = sc.broadcast([1, 2, 3])
broadcastVar.value

out:[1, 2, 3]



2.2 累计器

累计器是只能通过关联操作做“加”运算的变量,从而可以高效支持并行。它可以用来实现计数器或者求和。Spark原生支持数字类型的累计器,程序员可以增加对新类型的支持。 如果累加器创建时赋给了一个名字,那么这个累加器会在Spark的UI上展现。这个有利于理解程序的执行过程(遗憾的是这个功能Python中暂不支持)。


累计器通过调用函数SparContext.accumulator(v)并赋予一个初值来创建。然后跑在集群上的任务就可以使用add方法或者+=运算符增加累计器的值。但是,任务是不能读这个累计器的值得,只有驱动程序才可以通过方法value来读。

代码:

accum = sc.accumulator(0)
sc.parallelize([1, 2, 3, 4]).foreach(lambda x:/ 
                                     accum.add(x))
accum.value

out:10




总结

Introduction to Big Data with Apache Spark——week2课题笔记_第22张图片

你可能感兴趣的:(python和机器学习)