Pyspark 如何对变量做累计增量运算

来源:互联网 发布:浪拍云的淘宝人生 编辑:程序博客网 时间:2024/05/16 08:25

因为工作缘故要接触pyspark做线上分布式数据处理,每当在开发过程中遇到的问题,上网查时,网上相关回答的资料相对较少,所以作者以自己遇到的问题以及其解决方法做一个总结和分享,帮助有相关需求的同学更快更方便地解决困难。

  • 在上线项目实施中,不可避免要根据时间段(季度/月/天)做成本或者收入的累计增量计算,这里不一定要调用的pyspark函数语句,只需要用到简单的sql语句就可以满足这个需求。

当用spark.sql从hdfs调出需要的数据

df = spark.sql("select report_date, revenue, cost from (database_name)")**用spark.sql调出来的数据结构就直接是dataframe格式** 根据report_date计算出revenue 和 cost 的累计增量 ##df.registerTempTable("df_table")df_cum = df.sql("""select report_date    , revenue    , cost    , sum(revenue) over (order by revenue, report_date) as revenue_cum    , sum(cost) over (order by cost, report_date) as cost_cumfrom df_table""")
输出:
[Row(report_date='2017-03-02', revenue=4500, revenue_cum=4500, cost=3000, cost_cum=3000), Row(report_date='2017-03-03', revenue=5300, revenue_cum=9800, cost=4000, cost_cum=7000), Row(report_date='2017-03-04', revenue=6700, revenue_cum=15500, cost=5000, cost_cum=12000)]
阅读全文
0 0