5 pyspark学习---Broadcast&Accumulator&sparkConf

1 对于并行处理,Apache Spark使用共享变量。当驱动程序将任务发送给集群上的执行者时,集群中的每个节点上都有一个共享变量的副本,这样就可以用于执行任务了。

2 两种支持得类型

(1)Broadcast

广播变量保存所有节点数据备份。该变量缓存在所有机器上,而不是在有任务的机器上发送。下面的代码块包含了PySpark的广播类的详细信息

1 from pyspark import SparkContext, SparkConf
2 
3 
4 sc = SparkContext()
5 words_new = sc.broadcast(['scala','java','hadoop'])
6 data = words_new.value
7 print 'stored data->%s'%(data)
8 elem=words_new.value[2]
9 print 'priting a particular element in rdd-》%s'%(elem)

(2)Accumulator

累加器变量用于通过结合和交换操作来聚合信息。例如,您可以使用累加器来进行sum操作或计数器(在MapReduce中)。下面的代码块包含了PySpark的累加器类的详细信息

 1 from pyspark import SparkContext 
 2 sc = SparkContext("local", "Accumulator app") 
 3 num = sc.accumulator(10) 
 4 def f(x): 
 5    global num 
 6    num+=x 
 7 rdd = sc.parallelize([20,30,40,50]) 
 8 rdd.foreach(f) 
 9 final = num.value 
10 print "Accumulated value is -> %i" % (final)

3 sparkConf

(1)无论是集群还是单机运行spark运用,需要进行一些参数得设置,这个时候sparkConf就派上用场了。

(2)创建conf以后,同时将会加载spark.*得java系统。这样就可以使用链式编程比如conf.a.b.

(3)常用方法

set(key,value)#设置配置属性

setMaster(Value)#设置主节点URL

setAppName(valle)#设置应用名称

get(key,dafaultvalue=none)#获得配置文件

学习途径:https://www.tutorialspoint.com/pyspark/pyspark_mllib.htm

好了 加油哟

原文地址:https://www.cnblogs.com/lanjianhappy/p/8707002.html