SparkContext是PySpark的编程入口,作业的提交,任务的分发,应用的注册都会在SparkContext中进行。一个SparkContext实例代表着和Spark的一个连接,只有建立了连接才可以把作业提交到集群中去。实例化了SparkContext之后才能创建RDD和Broadcast广播变量。
-
1.创建方式
- 1.1 通过SparkSession获取SparkContext对象
- 1.2 引入pyspark.SparkContext进行创建,如下代码所示
from pyspark import SparkContext from pyspark import SparkConf conf = SparkConf() conf.set('master','local') sparkContext = SparkContext(conf=conf) rdd = sparkContext.parallelize(range(100)) print(rdd.collect()) sparkContext.stop()
上面代码中的Sparkconf对象是Spark里面用来配置参数的对象,后续会着重讲解
-
2.SparkContext的内容(主要是方法讲解)
- 2.1 accumulator()
- 是Sparkcontext上用来创建累加器的方法。创建的累加器可以在各个task中进行累加,并且只能够支持add操作。该方法 支持传入累加器的初始值。这里以Accumulator累加器做1到50的加法作为讲解的例子
-
# 新建accumulator.py文件,内容如下: from pyspark import SparkContext,SparkConf import numpy as np conf = SparkConf() conf.set('master','spark://****:7077') context = SparkContext(conf=conf) acc = context.accumulator(0) print(type(acc),acc.value) rdd = context.parallelize(np.arange(101),5) def acc_add(a): acc.add(a) return a rdd2 = rdd.map(acc_add) print(rdd2.collect()) print(acc.value) context.stop()
使用spark-submit accumulator.py运行
-
2.2 addFile()
-
addFile方法添加文件,使用SparkFiles.get方法获取文件 .
-
这个方法接收一个路径,该方法将会把本地路径下的文件上传到集群中,以供运算过程中各个node节点下载数据,路径可以是本地路径也可是hdfs路径,或者一个http,https,或者tfp的uri。如果上传的是一个文件夹,则指定recursize参数为True.上传的文件使用 SparkFiles.get(filename)的方式进行获取。
-
新建addFile.py文件,内容如下: from pyspark im
-
- 2.1 accumulator()