sql - 使用 Spark 优化 Hive SQL 查询?
问题描述
我有一个复杂的 SQL 查询,用于在 Hadoop Hive 中获取数据。
我已经开始阅读有关 Spark 和 PySpark 的信息。这些工具似乎有性能改进。但是由于我仍然需要从 Hive 获取数据,所以 Spark 是无关紧要的,对吧?换句话说,如果我必须查询 Hive 以获取我的数据,那么我从 Spark 获得的任何性能改进都只会来自我在从 Hive 检索数据后应用到数据的转换。
我是否正确理解了这些技术?
解决方案
最终,这取决于您的 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)
推荐阅读
- wordpress - WordPress Gutenberg 注册多个自定义块
- go - 范围指针的 Golang
- mysql - 错误代码:2013。在使用运算符查询期间丢失与 MySQL 服务器的连接 - 或
- r - 通过 R 中的多个变量对纵向数据集进行子集化
- tsql - 报告后面的 SQL 发生了变化,但返回的记录集没有,这是一个问题吗?
- google-apps-script - GOOGLE BUSINESS - 如何为我的网站设置网站图标?
- graph - 通过在简化图中查找模式来计算 ARI
- python - Jupyter:内核似乎已经死了。它会自动重启
- hyperledger-fabric - 超级账本结构设计
- java - Mockito.invokeMethod:我可以将功能接口的实现作为参数传递吗?