Spark SQL 和 MongoDB 对同一数据的查询执行时间未产生预期结果

Spark SQL and MongoDB query execution times on the same data don't produce expected results

这是一个普遍的问题,但我希望有人能回答。我正在比较 MongoDB 和 Spark SQL 之间的查询执行时间。具体来说,我从 .csv 文件创建了一个包含 100 万个条目的 MongoDB 集合,并使用 Compass 中的 mongosh 运行 对其进行了一些查询。然后使用 Spark Shell 和 Spark - MongoDB 连接器,我将这个数据库从 MongoDB 作为 RDD 插入到 Spark 中。之后,我将 RDD 转换为 Dataframe 并在其上启动 运行ning Spark SQL 查询。我 运行 在 Spark SQL 上执行与 MongoDB 相同的查询,同时计算两个实例中的查询执行时间。结果是在

这样相当简单的查询中

SELECT ... FROM ... WHERE ... ORDER BY ...

MongoDB 明显快于 Spark SQL。在其中一个示例中,MongoDB 的相应执行时间约为 800 毫秒,而 Spark SQL 的执行时间约为 1800 毫秒

根据我的理解,Spark 数据帧会自动使代码分发并 运行 并行,因此 Spark SQL 查询应该比 MongoDB 查询更快。谁能解释一下?

我是对的,与 MongoDB 查询相比,Spark SQL 在 Dataframe 上应该更快。似乎使用连接器导入数据是导致执行时间问题的原因。我尝试将 .csv 文件中的数据直接插入到 Dataframe 中,查询时间比对导入数据(来自 MongoDB 连接器)和 MongoDB.

的查询快得多