我在Hive和Spark SQL中执行相同的查询。我们知道Spark比hive更快,所以我得到了预期的响应时间。
但是当我们考虑CPU利用率时,
这是Spark和Hive的真实本质吗?
答案 0 :(得分:2)
大图
Spark没有超级大国。它优于MapReduce,优于快速内存访问,而不是基于分布式存储的较慢的核外处理。因此,它的核心是切断IO等待时间。
结论
预计平均CPU利用率会更高。我们假设你要计算 N 数的总和。独立于实现的渐近操作数将是相同的。但是,如果数据在内存中,您可以期望更少的总时间和更高的平均CPU使用率,而如果数据在磁盘上,您可以期望更长的总时间和更低的平均CPU使用率(更高的IO等待)。
一些评论:
Spark和Hive的设计并未考虑到相同的目标。 Spark是更多的ETL /流式ETL工具,Hive数据库/数据仓库。这意味着引擎盖下的优化程度不同,性能可能会有很大差异,具体取决于工作负载。
在没有上下文的情况下比较资源使用情况并没有多大意义。
总的来说,Spark不那么保守,而且资源更耗力。它既反映了设计目标,也反映了硬件的发展。 Spark比较年轻几年,足以看到硬件成本大幅下降。