Spark sql.DataFrame过滤器函数无法按预期工作

时间:2016-04-28 16:44:02

标签: python apache-spark filter dataframe pyspark

我有一个带有一些行的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

我在代码的其他部分使用了具有相同语法和逻辑的过滤函数,它的表现与预期一致,这里有什么问题?

1 个答案:

答案 0 :(得分:0)

尝试对数据帧使用pythonic字符串比较而不是SQL。

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