pyspark“isin”花费太长时间

Doo*_*oof 2 apache-spark-sql pyspark

我有一个需要从 pyspark.sql.DataFrame 中过滤的 ID 列表。该 ID 有 3000000 个值。我使用的方法是

df_tmp.filter(fn.col("device_id").isin(device_id))
Run Code Online (Sandbox Code Playgroud)

这需要很长时间并且陷入困境。有什么替代方案吗?

Ste*_*ven 6

尝试这个 :

from pyspark.sql import functions as F

df_temp.join(
    F.broadcast(
        spark.createDataFrame(
            [(ID_,) for ID_ in device_id],
            ["device_id"],
        )
    ),
    on="device_id",
)
Run Code Online (Sandbox Code Playgroud)