【问题标题】:Pyspark: filter DataaFrame where column value equals some value in list of Row objectsPyspark:过滤DataFrame,其中列值等于行对象列表中的某个值
【发布时间】:2017-04-25 23:49:01
【问题描述】:

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

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

从具有架构(id, name)DataFrame 我想filter 输出id equals some artist in the given Row of list 所在的行。正确的做法是什么?

为了进一步澄清,我想做这样的事情:select row from dataframe where row.id is in list_of_row_objects

【问题讨论】:

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


【解决方案1】:

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

如果它很大,那么您可以改用 dataframe_of_row_objects。使用 dataframe_of_row_objects 中的艺术家列和原始数据框中的 id 列在数据框和 dataframe_of_row_objects 之间进行内部连接。这基本上会删除任何不在 dataframe_of_row_objects 中的 id。

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

【讨论】:

    猜你喜欢
    • 2016-05-13
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 2018-03-24
    • 1970-01-01
    • 1970-01-01
    • 2020-10-16
    • 2020-11-29
    相关资源
    最近更新 更多