怎么在hive里用sql查询信息?
网友解答: 感谢邀请。Apache Hive还是我2年前在项目组中构建大数据集数据仓库用到的技术,当时用到的版本是1.5, 现在的版本是2.3.2 增加了许多功能点,如beeline、增
感谢邀请。
Apache Hive还是我2年前在项目组中构建大数据集数据仓库用到的技术,当时用到的版本是1.5, 现在的版本是2.3.2 增加了许多功能点,如beeline、增加后端计算引擎支持等。
先简单介绍下Apache Hive, 它是Hadoop生态链中的一个数据仓库(Data Warehouse)工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,而sql语句转换为MapReduce任务进行运行,在Hive2.0以上的版本,sql还可以转化为Spark任务,其速度往往比MapReduce任务快的多。
Hive的优点是学习成本低,简单易用。 Hive 定义了简单的类 SQL 查询语言,称为 HiveQL。 允许熟悉 SQL 的开发人员不必开发专门的MapReduce应用就可以对数据进行操作和查询,十分适合数据仓库的统计分析。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作。
问题中的Hive如何用sql查询信息,更准确的说法是如何调用HiveQL查询信息。熟悉SQL查询方式(select clause)几乎无缝在Hive中查询。
Hive查询语句的语法:
SELECT [ALL | DISTINCT] select_expr, select_expr, ... FROM table_reference [WHERE where_condition] [GROUP BY col_list] [HAVING having_condition][CLUSTER BY col_list | [DISTRIBUTE BY col_list] [SORT BY col_list]] [LIMIT number] ;下面给出几个例子说明Hive的使用。
1,对文件中的词频进行统计分析。
hive DROP TABLE IF EXISTS docs;hive CREATE TABLE docs (line STRING);hive LOAD DATA INPATH 'input_file' OVERWRITE INTO TABLE docs;hive CREATE TABLE word_countsAS
SELECT word, count(1) AS count
FROM
(SELECT explode(split(line, 's')) AS word FROM docs) temp
GROUP BY word
ORDER BY word;
2, 比如说数据文件已经映射为如下表:
a. 获取工资大于25000的人员姓名和职位。
hive SELECT Name, Position FROM employee WHERE salary25000;b, 获取职位相关人员数量
hive SELECT Position, COUNT(1) AS PersonCount FROM employee GROUP BY Postion;可以看出简单用法时和普通的SQL语句没有太多区别。
【补充】
1,进入Hive终端的方式很直接,在安装好Hive并且配置好环境变量后,直接键入hive 或者beeline就会进入Hive的终端。正常的话就会看到提示符如下:
hive ....就可以在其中输入其他命令或者语句了。
2, 进入Hive后可以用下列命令查询Hive数据仓库的基本情况,比如表的个数, 表的属性信息等:
hive show tables;hive describe `tablename';希望这个回答可以有帮助,欢迎交流!