hive pyspark日期比较

时间:2016-11-16 22:33:55

标签: hadoop hive pyspark

我正在尝试将hiveQL查询转换为pyspark。我正在过滤日期并得到不同的结果,我想知道如何在pySpark中获得与Hive相匹配的行为。配置单元查询是:

SELECT COUNT(zip_cd) FROM table WHERE dt >= '2012-01-01';

在pySpark中,我正在进入解释器:

import pyspark.sql.functions as psf
import datetime as dt

hc = HiveContext(sc)
table_df = hc.table('table')
DateFrom = dt.datetime.strptime('2012-01-01', '%Y-%m-%d')
table_df.filter(psf.trim(table.dt) >= DateFrom).count()

我变得相似,但不一样,导致两个计数。有谁知道这里发生了什么?

1 个答案:

答案 0 :(得分:0)

您的代码首先从日期datetime创建2012-01-01个对象。然后在过滤期间,对象被替换为它的字符串表示(2012-01-01 00:00:00),并使用词典方式比较日期,过滤掉2012-01-01

>>> '2012-01-01' >= '2012-01-01 00:00:00'
False
>>> '2012-01-02' >= '2012-01-01 00:00:00'
True

要获得与SQL相同的结果,只需使用strptime删除代码并使用字符串比较日期。