PySpark实战:广播变量
来自CloudWiki
介绍
广播变量允许程序缓存一个只读的变量在集群的每台机器上,
而不是每个任务保存一个拷贝
借助广播变量,可以用一种更高效的方式来共享一些数据,比如一个全局配置文件,可以通过广播变量共享给所有节点。
应用
广播变量brVar是普通变量v的一个包装变量,
各个节点都可以通过brVar.value来引用广播的数据。
import findspark findspark.init() ############################################## from pyspark.sql import SparkSession spark = SparkSession.builder \ .master("local[1]") \ .appName("RDD Demo") \ .getOrCreate(); sc = spark.sparkContext ############################################# conf = {"ip":"192.168.1.1","key":"cumt"} #广播变量 brVar = sc.broadcast(conf) #获取广播变量值 a = brVar.value #{'ip': '192.168.1.1', 'key': 'cumt'} print("获取广播变量值:") print(a) #cumt print(a["key"]) #更新广播变量 brVar.unpersist() conf["key"] = "jackwang" #再次广播 brVar = sc.broadcast(conf) #获取广播新变量值 a = brVar.value #{'ip': '192.168.1.1', 'key': 'jackwang'} print("获取新的广播变量值:") print(a) #destroy()可将广播变量的数据和元数据一同销毁,销毁后不能使用 brVar.destroy() ############################################## sc.stop()
- 广播变量brVar可以在集群的其他节点上进行共享
- 在不同的节点上,可以通过a = brVar.value获取广播变量brVar的值。
输出
获取广播变量值: {'ip': '192.168.1.1', 'key': 'cumt'} cumt 获取新的广播变量值: {'ip': '192.168.1.1', 'key': 'jackwang'}