2016-04-28 58 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))