2016-04-28 48 views
0

我有一些行的pyspark.sql.DataFrame,如果我嘗試把它們中的一些,我可以看到的是作爲填充料,例如:星火sql.DataFrame過濾功能無法正常運行

train_df.take(20)

回我:

[Row(entityId=u'7179b9467f825a5bbb748ea6226b12137e23a19f', event=u'preferences-tags', targetEntityId=u'angriff'), 
Row(entityId=u'7179b9467f825a5bbb748ea6226b12137e23a19f', event=u'preferences-tags', targetEntityId=u'schiff'), 
Row(entityId=u'7179b9467f825a5bbb748ea6226b12137e23a19f', event=u'preferences-communityId', targetEntityId=u', ... ] 

,我想其中的一個字段對其進行過濾,例如在event = preferences-tags,使用如下的過濾功能:

PRIMARY_EVENT_NAME = 'preferences-tags' 
rating = train_df.filter("event = '%s'" % (PRIMARY_EVENT_NAME)) 

但似乎它沒有正確地過濾他們,返回0,結果

rating.count() 
# 0 is returned 

我使用的過濾器功能,在我的代碼的其他部分相同的語法和邏輯,它只是與預期相符,什麼是錯的這裏?

+0

'filter'需要的功能,所以我不明白爲什麼你認爲一個字符串會做任何事情 –

+0

train_df是pyspark.sql.DataFrame和過濾器接受SQL表達式的字符串作爲參數 – Mattia

+0

啊,我明白你現在要問什麼。如果您使用的是字符串,那麼您是否嘗試過'LIKE'或'=='而不是'='? –

回答

0

嘗試對數據框使用pythonic字符串比較而不是SQL。

rating = train_df.filter(train_df.event == PRIMARY_EVENT_NAME))