2016-11-16 100 views
1

hiveQLクエリをpysparkに変換しようとしています。私は日付をフィルタリングして別の結果を得ており、pySparkの動作をHiveの動作に合わせる方法を知りたいと思います。ハイブクエリは次のとおりです。pySparkでハイブpyspark日付比較

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

私は通訳に入っています:

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

私は2つのカウントでは、類似したが、同じではない結果を取得しています。誰がここで何が起こっているのか知っていますか?

答えて

0

あなたのコードは、最初に2012-01-01からdatetimeオブジェクトを作成します。その後、オブジェクトをフィルタリングの間にそれの文字列表現(2012-01-01 00:00:00)に置き換えられ、日付は2012-01-01をフィルタリング辞書的に使用して比較されます:SQLは、ちょうどstrptimeでコードを削除し、文字列を使用して日付を比較すると、同じ結果を達成するために

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

を。

+0

ああそうです。ありがとうございました! – crabmanbrian