pyspark 使用广播变量进行大表和小表join

本文介绍了如何在PySpark中利用广播变量提高大表与小表Join操作的效率。通过将小表广播到每个节点,减少shuffle过程,从而提升大数据处理的性能。同时,还讨论了广播变量的更新策略。
摘要由CSDN通过智能技术生成

pyspark 大表和小表join,使用广播变量,并对广播变量更新

from pyspark import SparkConf, SparkContext, SQLContext

# import org.apache.spark.sql.functions.broadcast
# 给定节点,根据其信息进行扩展,找到各个层级扩展的节点。
# df_edges_all:全部的(边)[source,target,xxx,xx],loop_nodes:[nodes],loop_num :循环次数, sqlContext: SqlContext的实例
def extend_fun(sc,sqlContext, df_edges_all,loop_nodes, loop_num):
    # loop_nodes = ""
    # 进行注册
    df_edges_all.createTempView("nodes_edges_all")
    loop_nodes.createTempView("loop_nodes")
    #广播变量

    # 进行扩展
    for i in range(loop_num):
    # 广播变量更新
        print(i)
        bd = set()
        brodcast = sc.broadcast("")
        for index, col in loop_nodes.toPandas().iterrows():
            bd.add(col["nodes"])
        brodcast.unpersist(False)
        brodcast = sc.broadcast(bd)
        df_edges_all_filter = df_edges_all.filter(
            df_edges_all["Source&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值