从一段代码浅谈pyspark性能优化

本文探讨了在pyspark中处理大规模数据join时遇到的性能问题,提出通过广播小表、调整join策略、设置合适的shuffle参数以及使用checkpoint来优化。对于大表,直接广播可能导致内存不足,应谨慎使用map-join。优化后的代码在7分钟内完成了原本3小时未完成的任务。
摘要由CSDN通过智能技术生成

问题引出

我们在日常的特征工程中,常常需要将多张表进行关联操作,也就是所谓的join。现在有三张表A,B,C,其中A表数据总大小约300M, B表总数据大小约15G,C表数据总大小约400G,现在的需求是对这三张表做join,该如何实现?

常规做法

最简单的一种实现,就是先将其中的两张表join,再将剩下的一张表做join,代码如下:

sc = SparkSession\
        .builder\
        .appName("Test")\
        .getOrCreate()

A = sc.sparkContext.textFile("...")
B = sc.sparkContext.textFile("...")
C = sc.sparkContext
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值