首页 > 解决方案 > Hive 和 Spark 之间的执行差异

问题描述

全部:我正在寻找有更多知识的人来检查我对 Hive 和 Spark 的理解

我一直在研究不同的大型数据库解决方案,并试图了解 Hive 和 Spark 之间的执行差异。我尝试安装 Hadoop、Hive 和 Spark 以查看它们的性能。我能够让 Hadoop 和 Spark 工作。我无法让 Hive 工作。

当我通过优化器后在 Spark 中运行查询时,似乎最大的优势是最早开始时只从源中选择相关的表数据。因此,如果我在最终答案中只需要 Table1.columns(A,B,C),但告诉系统在 (Table1.A=Table2.B) 上加入 Table1 和 Table2,它会立即将携带的表格减少到仅相关项目...我认为 Hive 不会那样做。我相信它会在以后进行完全加入并执行缩减。

内存存储也存在差异(Hive 经常返回 HDFS,而 Spark 将内容保存在 RAM 中)。根据数据集/查询,这既有优点也有缺点。

不幸的是,因为我无法让 Hive 运行,我的理论是基于阅读其他人在 Hive 中运行的输出。

标签: apache-sparkhadoophive

解决方案


Tez 上的 Hive 和 Spark 都使用 Ram(memory) 对数据进行操作。计算的将被视为单个任务的分区数量与 Tez 上的 Hive 与 Spark 完全不同。默认情况下,Tez 上的 Hive 尝试使用组合器将某些拆分合并到单个分区中。Hive one Tez 似乎以比 spark 更好的方式处理集群的自动缩放,并且在大多数情况下都可以工作。Spark 不适用于自动缩放,它会出现很多 shuffle 错误,并且在有多个阶段时会失败。但是鉴于集群的固定大小,Spark 似乎在 TEZ 上比 Hive 表现更好,这可能归因于所做的一些优化以及如何实现 shuffle、序列化等。


推荐阅读