Hive是Facebook实现的一个开源的数据仓库工具——
- Hive基于Hadoop实现,底层数据存放在HDFS中,计算(查询)使用MapReduce任务实现
- 将结构化的数据文件映射为数据库表,并提供HQL查询功能,将HQL语句转化为MapReduce任务运行
关于Hive的介绍,可以参考我之前的笔记Hive简介、基本架构与存储结构。在实际应用中,我们主要通过编写HiveSQL来对数据进行查询等操作,本文介绍常用的HiveSQL如何转化为MapReduce任务,便于在编写SQL时写出更加高效的代码。
1. hive.fetch.task.conversion参数
在Hive中,有些简单任务既可以转化为MR任务,也可以Fetch抓取,即直接读取table对应的存储目录下的文件得到结果,具体的行为取决于Hive的hive.fetch.task.conversion
参数。
在hive-default.xml.template
中,可以找到这个参数描述如下:
<property>
<name>hive.fetch.task.conversion</name>
<value>more</value>