我正在玩集群上的一些数据,并希望做一些聚合 - 没有太复杂,但比总和更复杂,很少有连接和计数区别。我已经在Hive和Spark中使用Scala实现了这个聚合,并希望比较执行时间。
当我从网关提交脚本时,linux时间函数给我的实时小于sys时间,这是我所期望的。但我不确定选择哪一个作为正确的比较。也许只使用sys.time并多次运行这两个查询?在这种情况下,它是否可以接受或者我是完全的noob?
答案 0 :(得分:0)
实时。从性能基准测试的角度来看,您只关心在查询完成之前需要多长时间(人工时间),您可以查看结果,而不是内部应用程序正在调整多少进程。
注意,我会非常小心性能基准测试,因为Spark和Hive都有大量可调配置旋钮,这些旋钮会极大地影响性能。有关示例,请参阅here以通过矢量化,数据格式选择,数据存储和数据排序来改变Hive性能。
“普遍共识”是Spark在Tez上比Hive更快,但是Hive可以处理不适合内存的大量数据集。 (因为我很懒,所以不要引用消息来源,做一些谷歌搜索)