Pyspark:过滤DataaFrame,其中列值等于Row对象列表中的某个值

时间:2016-12-10 17:40:42

标签: apache-spark pyspark apache-spark-sql pyspark-sql

我有一个pyspark.sql.Row对象列表,如下所示:

[Row(artist=1255340), Row(artist=942), Row(artist=378), Row(artist=1180), Row(artist=813)]

从具有架构DataFrame的{​​{1}}我想(id, name)filter行。什么是正确的方法呢?

为了进一步澄清,我想做一些事情:id equals some artist in the given Row of list

1 个答案:

答案 0 :(得分:1)

主要问题是list_of_row_objects有多大。如果它很小,那么@Karthik Ravindra提供的链接

如果它很大,那么你可以使用dataframe_of_row_objects。使用dataframe_of_row_objects中的artist列和原始数据帧中的id列,在dataframe和dataframe_of_row_objects之间进行内部联接。这基本上会删除不在dataframe_of_row_objects中的任何id。

当然使用连接速度较慢但更灵活。对于不小但但仍然足够小以适应内存的列表,您可以使用广播提示来获得更好的性能。