问题描述
Create table t1(id int)
我在 Hive 2.3.6 (MapR Hadoop Distribution 6.3.0) 上触发了上述查询。
默认配置单元引擎是 tez。 因此,在触发查询后,我无法看到在 yarn 资源管理器 Web ui
上启动了任何 TEZ 应用程序所以我将执行引擎更改为 MapReduce。
set hive.execution.engine=mr
并尝试再次运行相同的查询。 同样,我无法在 yarn 资源管理器 Web ui
上看到任何 MR 应用程序启动所以我的问题是 hive 如何管理此类查询? 以及这些查询的详细信息存储在何处,例如应用程序 ID、开始时间等?
解决方法
$matchingDevice = $deviceTable['lalala']
- 仅是元数据操作,未处理数据。它在 Metastore 数据库中创建记录,不需要像 Tez 或 MR 这样的分布式处理框架,不使用 Yarn。
编译器仅在可能的情况下才将 DDL 转换为 Metastore 查询。
还有一些简单的 DQL 查询可以作为 Metastore 执行,前提是存在统计信息并且启用了此功能:https://stackoverflow.com/a/41021682/2700344,无需使用 Tez 或 MR。
也可以在没有分布式框架的情况下查询小表,使用 fetch-only 任务,参见:Why is Fetch task in Hive works faster than Map-only task?