2016-11-16 75 views
1

我想将hiveQL查询翻译成pyspark。我正在筛选日期并获得不同的结果,我想知道如何使pySpark中的行为与Hive的行为相匹配。蜂巢查询:蜂巢pyspark日期比较

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() 

我越来越相似,但不一样的,在这两个计数结果。有人知道这里发生了什么吗?

回答

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移除代码,并使用串比较日期。

+0

啊,我明白了。谢谢! – crabmanbrian