【发布时间】:2020-10-11 16:56:30
【问题描述】:
我有一个输入日期,但示例如下:df_inp
customer_id |ph_num|date |
1 |123 |2020-10-01|
2 |456 |2020-10-01|
3 |789 |2020-10-01|
1 |654 |2020-10-02|
2 |543 |2020-10-03|
1 |908 |2020-10-04|
4 |123 |2020-10-02|
我需要获取每个日常流程的最新记录。所以,我尝试了 windows rank() 操作并且它有效。但是,随着输入数据以百万计来优化性能,我们可以使用任何其他 spark 操作来获取基于 customer_id 和日期值排序的最新数据。
window_func = Window.partition_by("customer_id ").orderBy("date")
df = df.withColumn("rank", rank().over(window_func))
df = df.filter(df.rank == "1")
这里是 customer_id - 字符串和日期 - 时间戳
【问题讨论】:
标签: python dataframe pyspark hive pyspark-dataframes