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
好了 加油哟