我正在寻找一种方法来改善我的pyspark脚本的性能 . 目前我通过编写sql语句来实现结果,但需要一点时间 . 我来自数据库背景,最近在编码方面我很幸运 . 我需要你的帮助

样本数据:

NoOfSegments,SegmentID,Country
3,2,Bangalore
3,2,Bangalore
3,3,Delhi
3,2,Delhi
3,3,Delhi
3,1,Pune
3,3,Bangalore
3,1,Pune
3,1,Delhi
3,3,Bangalore
3,1,Delhi
3,3,Bangalore
3,3,Pune
3,2,Delhi
3,3,Pune
3,2,Pune
3,2,Pune
3,3,Pune
3,1,Bangalore
3,1,Bangalore

我的Select语句

input_data=spark.table(shankar_view)
input_data.createOrReplaceTempView('input_data')    
new_df=spark.sql('select distinct Country , SegmentID ,(count(*) over(partition by Country,SegmentID)/ count(*) over(partition by NoOfSegments))*100 as total_cnt  from input_data order by Country,SegmentID')

这是我的结果:
enter image description here

然后我有另一个数据帧(称为df),我正在加入我的第一个数据帧(称为new_df)并获得几列 .

df1 = new_df.alias('df1')
df2 = df.alias('df2')

join_df=df1.join(df2, df1.SegmentID == df2.seg_id).select('df1.*','df2.max_value')

我有什么方法可以改善这里的表现 . 请建议 .