【发布时间】:2021-07-10 22:35:38
【问题描述】:
我最近开始学习 PySpark 进行大数据分析。我有以下问题,并试图找到一种更好的方法来实现这一点。下面我将引导您解决问题。
鉴于下面的 pyspark 数据框:
| Col1 | Col2 | Col3 | DateTime | Value |
|---|---|---|---|---|
| A | C | yyy | 01.04.2019 | 100 |
| B | D | yyy | 05.04.2019 | 200 |
| B | D | xxx | 09.04.2019 | 50 |
| A | C | yyy | 08.04.2019 | 600 |
| A | C | xxx | 02.04.2019 | 580 |
我想按列分组 - Col1、Col2、Col3 并按每个组中的 DateTime 降序排序
| Col1 | Col2 | Col3 | DateTime | Value |
|---|---|---|---|---|
| A | C | xxx | 02.04.2019 | 580 |
| A | C | yyy | 08.04.2019 | 600 |
| A | C | yyy | 01.04.2019 | 100 |
| B | D | xxx | 09.04.2019 | 50 |
| B | D | yyy | 05.04.2019 | 200 |
然后,从这些排序组中的每一个中取出最上面的一行(即 DateTime 中的最后一行)
| Col1 | Col2 | Col3 | DateTime | Value |
|---|---|---|---|---|
| A | C | xxx | 02.04.2019 | 580 |
| A | C | yyy | 08.04.2019 | 600 |
| B | D | xxx | 09.04.2019 | 50 |
| B | D | yyy | 05.04.2019 | 200 |
最后,旋转 Col3 值并使用“值”
| Col1 | Col2 | xxx | yyy |
|---|---|---|---|
| A | C | 580 | 600 |
| B | D | 50 | 200 |
我将如何以更少的步骤以有效的方式实现这一目标?在此先感谢:)
【问题讨论】:
标签: python apache-spark pyspark apache-spark-sql