首页 > 解决方案 > 将 datetime 对象与 Pyspark 列进行比较?

问题描述

假设我生成了一个纪元值以使用日期时间进行比较:

from datetime import datetime, timedelta

today = datetime.now()
date_compare = today - timedelta(days=365)
data_compare = date_compare.timestamp()

我想获取这个日期并将其与包含存储为 long 类型的纪元值的 pyspark 列进行比较。

+------------+
|date        |
+------------+
|1585872000  |
|1599321205  |
|1590710400  |
+------------+

当我尝试在数据帧上对数据值大于 date_compare 变量的记录使用过滤器时,我没有返回任何记录,即使我知道这些值大于 date_compare。我在这里尝试使用这种方法:

import pyspark.sql.functions as f
df.filter(f.col(date) > f.lit(date_compare)).show()

我也尝试过长时间转换这个 date_compare 以及使用演员表,看看这是否有帮助,但无济于事。

import pyspark.sql.functions as f
df.filter(f.col(date) > f.lit(date_compare).cast("long")).show()

Pyspark 应该如何解释这个 datetime 变量以便我成功传递它来捕获记录?在我这边运行它时没有返回错误,所以我无法推断出这个过滤方法的问题。

标签: pythonapache-sparkdatetimepyspark

解决方案


推荐阅读