我有一个PySpark Dataframe input_dataframe ,如下所示:
**cust_id** **source_id** **value** **timestamp_column**
10 11 test_value 2017-05-19
10 12 test_value2 2017-05-19
10 11 updated_value 2017-05-20
此表的主键是 cust_id 和 source_id
的组合我必须创建 output_dataframe ,它只包含这个主键组合的最新时间戳( timestamp_column )的记录,所以我的最终输出如下: / p>
**cust_id** **source_id** **value** **timestamp_column**
10 12 test_value2 2017-05-19
10 11 updated_value 2017-05-20
有人可以帮助我使用pyspark代码实现它吗?任何帮助将不胜感激。
答案 0 :(得分:1)
如果你还没有,你需要在继续之前转换“timestamp_column”的数据类型。
from pyspark.sql.functions import col, max as max_timetamp
(cust_tmp.withColumn("timestamp_column", col("timestamp_column").cast("timestamp"))
.groupBy("cust_id", "source_id")
.agg(max_timetamp("datetime"))).show()
我希望这会有所帮助。
答案 1 :(得分:-1)
您可以使用Rank over分区来实现结果