【发布时间】:2021-07-26 08:17:20
【问题描述】:
我试图通过对 hive 表运行一个简单的查询来比较 Spark 的性能与 Hive 相比,例如:
spark.sql("select * from schema.table where col = 0")
问题在于,由于 Spark 的惰性求值行为,我必须添加一个动作以使其运行。
我考虑过使用.count() 来强制代码运行,但我担心它会改变应用程序的运行方式并使与 Hive 的比较错误,因为每个任务不仅会进行过滤,还会计算在内。
使用.show() 也无济于事,因为它会限制结果。
我还尝试查看应用程序的 Web UI,并尝试将过滤和计数分开,以了解它们各自花费了多少时间,但它似乎合并为一项任务。
最终,我想强制 Spark 在不使用操作的情况下运行我的代码,但据我所知,这是不可能的。 我想知道是否有办法解决这个问题,以及在这种情况下对 Spark 进行基准测试的最佳方法是什么(可以使用哪些操作对 Spark 的性能影响最小,等等)
谢谢!
【问题讨论】:
-
如果你想比较 hive 和 spark,为什么不使用 spark-sql。
标签: apache-spark apache-spark-sql