擅长:python、mysql、java
<p>在注释中,可以使用window函数对Spark Dataframe进行累计和。首先,我们可以创建一个带有伪列<code>'a', 'b', 'c', 'd'</code>的示例数据帧</p>
<pre><code>ls = [(11,1,1,100), (11,1,2,150), (12,1,1,50), (12,2,1,70), (12,2,2,20)]
ls_rdd = spark.sparkContext.parallelize(ls)
df = spark.createDataFrame(ls_rdd, schema=['a', 'b', 'c', 'd'])
</code></pre>
<p>您可以按列<code>a</code>和<code>b</code>进行分区,然后按列<code>c</code>排序。然后,将<code>sum</code>函数应用于末尾的列<code>d</code></p>
^{pr2}$
<p><strong>输出</strong></p>
<pre><code>+ -+ -+ -+ -+
| a| b| c|cum_sum|
+ -+ -+ -+ -+
| 11| 1| 1| 100|
| 11| 1| 2| 250|
| 12| 1| 1| 50|
| 12| 2| 1| 70|
| 12| 2| 2| 90|
+ -+ -+ -+ -+
</code></pre>