赞
踩
Spark 是流行大数据计算框架之一,和 mapred 相比,这种计算框架更加灵活方便。并且还有强大的机器学习库 Spark Mllib 。
除此之外,我们还可以发现 Spark 项目包含很多组件,这些组件关系密切并且可以相互调用。这样就不需要组合各种工具使用了。
Spark 可以运行在各种集群上,比如 YARN ,同时自带独立集群管理器。
Spark 还支持与 HDFS 进行对接。
import findspark
findspark.init()
import pyspark
每个Spark程序都由 driver 来负责发起,提交各种任务,Spark 通过 SparkContext 来充当 Spark 应用和集群之间的连接关系。
Spark 的核心操作建立在 RDD(Resilient Distributed Dataset) 也就是弹性分布式数据集上,可以说 Spark 的操作就是建立在 RDD
上的各种操作。而这些操作分为转化操作和核心操作
转化操作是惰性求值的,也就是在调用行动操作之前,转化操作不会被执行。
如果我们的计算过程中需要对一个RDD进行多次运算,那么由于惰性计算,这个RDD会被计算多次。此时我们可以将他进行持久化,将这个RDD的值缓存起来,以便后续使用。
首先是 RDD 的创建:
RDD 通过 SparkContext 来创建,提供两种创建方式。
一种是通过sc.parallelize
创建,这个也是最简单的办法
如果数据比较大,就没办法一口气保存在内存里了。这个时候我们就需要从文件或者分布式文件系统中读取了。在下面会演示。
from pyspark import SparkContext
sc = SparkContext.getOrCreate()
# 一个求平方数的例子
# 为了防止出现重复创建 Spark Context 可以用上面的方法创建。
nums = sc.parallelize([1,2,3,4]) #创建RDD的方法
squred = nums.map(lambda x : x*x).collect() #对RDD先执行转化操作 map ,之后执行执行操作 collect()
for num in squred :
print(num)
1
4
9
16
<
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。