2016-11-16 103 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