创建Spark数据帧并获取具有最大时间戳值的记录

时间:2017-07-27 06:58:31

标签: pyspark spark-dataframe

我有一个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代码实现它吗?任何帮助将不胜感激。

2 个答案:

答案 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分区来实现结果