我正在寻找一种方法来改善我的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')
这是我的结果:
然后我有另一个数据帧(称为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')
我有什么方法可以改善这里的表现 . 请建议 .