6

看完什么是hive,是数据库吗?,昨天有同事提到他可以过滤一个15B的表,在“group by”后与另一个表连接,结果是6B的记录,只用了10分钟!我想知道这在 Spark 中是否会更慢,因为现在使用 DataFrame,它们可能具有可比性,但我不确定,因此是这个问题。

Hive 比 Spark 快吗?还是这个问题没有意义?对不起,我的无知。

他使用最新的 Hive,它似乎在使用 Tez。

4

3 回答 3

4

Hive 只是一个为 MapReduce 类型的工作负载提供 sql 功能的框架。

这些工作负载可以在 mapreduce 或 yarn 上运行。

因此,比较 tez 上的 Hive 和 spark 上的 Hive。下面的好文章讨论了何时使用 Tez 在 Hive 上使用 ETL VS 何时使用 Spark ETL?(如果不确定,请在火花上使用 Hive)。

基准信息

越低越好

于 2016-09-09T16:50:11.090 回答
4

Spark 很方便,但在 SQL 性能方面不能很好地处理规模。

Hive对共同分区连接有惊人的支持。当您要加入的表有数亿到数十亿行时,您将非常感谢通过以下方式提供的细粒度连接支持:

  • 相似distribute by的和sort by(或cluster by
  • bucketed joins

Hive 有广泛的支持metadata-only queries:Spark 自 2.1 以来只看到了一丝曙光

当分区数量超过 10K+ 时,Spark 很快就会失去动力。Hive 不受此限制。

于 2017-09-20T05:18:12.720 回答
1

快进到 2018 年,Hive 比 SparkSQL 快得多(也更稳定),尤其是在并发环境中,根据以下文章:

https://mr3.postech.ac.kr/blog/2018/10/31/performance-evaluation-0.4/

文章使用三个集群(11 个节点、21 个节点、42 个节点)比较了几个使用 TPC-DS 基准(1TB、3TB、10TB)的 SQL-on-Hadoop 系统:

  • HDP(Hortonworks Data Platform) 2.6.4 中包含的 Hive-LLAP
  • HDP 3.0.1 中包含的 Hive-LLAP
  • Presto 0.203e(启用基于成本的优化)
  • Presto 0.208e(启用基于成本的优化)
  • HDP 2.6.4 中包含 SparkSQL 2.2.0
  • HDP 3.0.1 中包含的 SparkSQL 2.3.1
  • 在 Tez 之上运行的 Hive 3.1.0
  • Tez 上的 Hive 包含在 HDP 3.0.1 中
  • Hive 3.1.0 在 MR3 0.4 之上运行
  • Hive 2.3.3 在 MR3 0.4 之上运行

因此,与基于 Hive 的系统和 Presto 相比,SparkSQL 速度非常慢,并且无法在并发环境中扩展。(请注意,实验使用在 vanilla Spark 上运行的 SparkSQL。)

于 2018-11-02T01:51:19.013 回答