您的位置:首页 > 运维架构 > Apache

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

2017-12-01 12:53 609 查看
SparkContext



RDD











代码:

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



从外部文件创造:



Transformations



代码:





Action



代码:





Cache





Spark流程



其他注意

1. key-value类型









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


总结

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: