Apache spark Spark在db上运行过滤器,而不是在Spark数据帧上运行

Apache spark Spark在db上运行过滤器,而不是在Spark数据帧上运行,apache-spark,pyspark,apache-spark-sql,Apache Spark,Pyspark,Apache Spark Sql,因为我是一个新手,也许我错过了一些东西 我正在使用PySpark从mongo获取数据帧并进行一些过滤。 当我在大约5000条记录上运行时,一切都很好,但是当我在大约17000条记录上运行相同的东西时,不是在数据帧上过滤记录,而是在mongodb上运行过滤,这使得它太慢了 我在这里遗漏了什么,可能是一些配置 dataframe = df1.where(col("") != '') .filter((col("")

因为我是一个新手,也许我错过了一些东西

我正在使用PySpark从mongo获取数据帧并进行一些过滤。 当我在大约5000条记录上运行时,一切都很好,但是当我在大约17000条记录上运行相同的东西时,不是在数据帧上过滤记录,而是在mongodb上运行过滤,这使得它太慢了

我在这里遗漏了什么,可能是一些配置

dataframe = df1.where(col("") != '')
                            .filter((col("")
                            .isin(df2["id"))
                            & (col("create_date") >= lit(start_date))
                            & (col("create_date") <= lit(end_date)))
dataframe=df1.where(col(“”)=“”)
.过滤器((列(“”)
.isin(df2[“id”))
&(col(“创建日期”)>=lit(开始日期))
&(列(“创建日期”)已解决


我没有在MongoDB集合中创建索引,因为spark正在发布查询,无法缓存。

您如何知道筛选在mongo上工作?这没有意义。因为我可以在MongoDB中看到它logs@Lamanus我有两个数据帧,其中第二个数据帧被迭代13k次,以获得每个记录和mat的id使用第一个数据帧(df1)进行切换,这样我就可以在mongdb日志中看到正在触发的查询……您的过滤器是……:(您必须找到连接或比较的方法,另一种方法是不使用dataframe with column函数。