在阅读What is hive, Is it a database?之后,一位同事昨天提到他能够过滤掉一张15B的桌子,在做了一个“分组”之后将它与另一张桌子连在一起,结果只有10分钟就产生了6B记录!我想知道这在Spark中是否会变慢,因为现在使用DataFrames,它们可能具有可比性,但我不确定,因此问题。
Hive比Spark更快吗?或者这个问题没有意义?对不起,我的无知。
他使用最新的Hive,似乎正在使用Tez。
答案 0 :(得分:3)
Hive只是一个为MapReduce类型的工作负载提供sql功能的框架。
这些工作负载可以在mapreduce或yarn上运行。
因此,比较Hiz on tez vs Hive on spark。下面讨论这个When to go with ETL on Hive using Tez VS When to go with Spark ETL?的好文章(如果不确定的话,要点击火花上的Hive)。
降低更好
答案 1 :(得分:2)
Spark 方便但是在SQL性能方面并没有很好地处理扩展。
Hive对共同分区的连接有惊人的支持。当您加入的表格有数亿甚至数十亿行时,您将真正通过以下方式欣赏细粒度的连接支持:
distribute by
和sort by
(或cluster by
)bucketed joins
Hive对metadata-only queries
有广泛的支持:Spark自2.1以来只有一点点
当分区数超过10K +时,Spark会快速耗尽。 Hive没有受到这种限制。
答案 2 :(得分:0)
快速展望到2018年,根据以下文章,Hive比SparkSQL更快(并且更稳定),尤其是在并发环境中:
https://mr3.postech.ac.kr/blog/2018/10/31/performance-evaluation-0.4/
本文比较了使用TPC-DS基准(1TB,3TB,10TB)和三个群集(11个节点,21个节点,42个节点)的几种SQL-on-Hadoop系统:
因此,与基于Hive的系统和Presto相比,SparkSQL非常慢,并且无法在并发环境中扩展。 (请注意,实验使用的是运行在原始Spark上的SparkSQL。)