Hive和SQL Server性能比较

7

1) 我从两个月前开始使用Hive。我的任务与SQL中的相同。我发现Hive很慢,执行查询需要更长的时间,而SQL只需要几分钟/秒。

在Hive中执行任务后,当我在SQL和Hive中交叉检查结果时,我发现一些结果存在差异(不是全部表格)。 例如:我有一个表格,其中有2012条记录,当我在Hive中执行相同的任务时,我只得到了2007条记录。

为什么会出现这种情况?

2) 如果我想加速Hive的执行速度,我应该怎么做? (目前我只在单个集群上执行所有操作。如果我想增加集群数量,我需要增加多少个集群才能提高性能)

请给我一些解决方案或一些好的实践方法,以便我可以专注地完成它。

谢谢。


1
我不能直接回答你的问题,但我不认为你可以直接比较SQL Server和Hive:它们是完全不同的产品,具有完全不同的目标和架构。询问如何提高Hive性能是一个很好的问题,但我不认为SQL Server对Hive(反之亦然)有任何影响。尽管如果你想获得有关改进任何系统性能的建议,你需要提供迄今为止更多的信息。 - Pondlife
@Pondlife:感谢您的回复。 是的,我知道它们两者是不同的。我只是想知道Hive在执行查询时是否有一些不同的行为方式,与SQL有何区别?匹配标准是否有任何差异? 此外,我想了解基于各种因素,提高Hive性能的不同因素。 - Bhavesh Shah
@Pondlife:我不明白为什么不能将两者进行比较,因为它们都被用作数据查询引擎。是的,底层的数据和计算架构是不同的,但目的是相同的。如果我错过了什么,请告诉我如何使用Hive进行除SQL类型查询之外的其他查询。 - Causality
@Causality 我认为你可以比较这些特性,其中一个在某些情况下可能更适合(请参见此问题的已接受答案),但是直接在相同任务或查询上比较性能是没有意义的。一辆货车和一辆皮卡可能能够承载类似的负载,但它们具有完全不同的性能特征,问为什么其中一辆车比另一辆车更快或更省油是没有意义的。它们只是设计不同的车辆,即使它们都旨在搬运货物。 - Pondlife
2个回答

6
  • Hive和SQL Server除了查询语言的语法相似外,在任何方面都不可比较。
  • 虽然SQL Server是为了能够从单台机器实时响应而构建的,但Hive是用于处理可能跨越数百或数千台机器的大型数据集。
  • Hive(通过Hadoop)启动作业时有很多开销。
  • Hive和Hadoop不会像SQL Server那样将数据缓存到内存中。
  • Hive仅最近添加了索引,因此大多数查询最终都会成为表扫描。
  • 如果您的数据集适合放在单个计算机上,则可能希望坚持使用SQL Server而不是Hive。 Hive性能调优主要基于Hadoop性能调优,尽管根据您运行的查询类型,使用LazyBinarySerDe可以获得免费性能。

Hive与常规SQL有一些不同之处,这可能会影响您的查询。没有更多详细信息,我无法猜测原因。


1
忽略“它们在任何方面都不可比”的评论。如果它存储数据,它就可以与任何其他存储数据的方法进行比较。但请注意,13年前,SQL Server有1000多人全职改进他们的产品。因此,虽然这并不能“证明”什么,但它确实增加了一个人对更多工作=更多成果的信心。更重要的是,寻找任何非平凡的基准测试,比较开源和/或非关系型数据存储方法与主流关系型数据库之一。你找不到它们。这对我来说说明了很多问题。(另外,主流并不是必需的,因为目前世界上最快的数据引擎甚至不是主流的。但如果需要那个级别,请看ExoSol。)如果你的需求是学习在工作中使用技术,而这种技术是Hive,我的建议是找到一个真正专注于尽可能发挥Hive查询性能的人。如果有一个Hive查询大师,找到他们。但如果你需要比他们给你的更多,那么你正在使用错误的技术。
如果Hive不是必需品,我会避免使用它和其他缺乏具有保证其在未来5年内存活并使它们摆脱当前所处的利基类别的令人信服的商业模式的技术(目前比任何主流数据引擎少20倍 - https://db-engines.com/en/ranking)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接