首页 > 解决方案 > 使用 Spark 优化 Hive SQL 查询?

问题描述

我有一个复杂的 SQL 查询,用于在 Hadoop Hive 中获取数据。

我已经开始阅读有关 Spark 和 PySpark 的信息。这些工具似乎有性能改进。但是由于我仍然需要从 Hive 获取数据,所以 Spark 是无关紧要的,对吧?换句话说,如果我必须查询 Hive 以获取我的数据,那么我从 Spark 获得的任何性能改进都只会来自我在从 Hive 检索数据后应用到数据的转换。

我是否正确理解了这些技术?

标签: sqlapache-sparkhadoophivepyspark

解决方案


最终,这取决于您的 Hive 执行引擎、文件格式和分区/存储桶。这不仅仅是 Hive vs Spark。例如,使用 Spark 读取 CSV 文件将需要比 Hive 中的分区、Snappy 压缩 Parquet 或 ORC 表更多的资源

撇开数据格式不谈,如果 Spark 和 Hive 查询在 YARN 中运行,它们将占用大致相同的资源来计算数据,尽管 Spark 允许您对结果集做更多的事情,因为它是以编程方式定义的

你也可以让 Hive 使用 Spark 而不是 Mapreduce 作为执行引擎,或者 Tez 作为另一个选项

Spark 仅使用 Hive Metastore 来查找数据,因此您使用的数据库引擎/客户端的性能也不同(Spark vs Presto vs direct JDBC or Thrift)


推荐阅读