我有一个pysparkDataframe,如下所示:
+------+-----------+
|src_ip| timestamp|
+------+-----------+
|A |2020-06-19 |
|B |2020-06-19 |
|B |2020-06-20 |
|C |2020-06-20 |
|D |2020-06-21 |
+------+-----------+
我想检索每个不同ip地址的计数,它被分解为每天可以看到多少不同的ip地址。
我试过:
df.groupBy(window(df['timestamp'], "1 day")) \
.agg(countDistinct('src_ip')) \
.orderBy("window").show()
但是,这并没有给出正确的结果,因为它将df拆分为多个时间窗口,并获得每个时间窗口的不同计数,如图所示:
+-----------+-----------------------+
| window | count(DISTINCT(src_ip)|
+-----------+-----------------------+
|2020-06-19 | 2 |
|2020-06-20 | 2 |
|2020-06-21 | 1 |
+-----------+-----------------------+
这是不正确的,因为b已经出现在2020-06-19上,应该被分类为不同的。
我想看到的结果表是:
+-----------+-----------------------+
| window | count(DISTINCT(src_ip)|
+-----------+-----------------------+
|2020-06-19 | 2 |
|2020-06-20 | 1 |
|2020-06-21 | 1 |
+-----------+-----------------------+
Pypark能做到吗?非常感谢您的帮助。
1条答案
按热度按时间pftdvrlh1#
这就是你想要的吗?或者请多加解释。