我有一个带有一些行的pyspark.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 :(得分:0)
尝试对数据帧使用pythonic字符串比较而不是SQL。
rating = train_df.filter(train_df.event == PRIMARY_EVENT_NAME))