
# 查询Hive表数据
#### 功能介绍
本小节介绍了如何使用HQL对数据进行查询分析。从本节中可以掌握如下查询分析方法：
- SELECT查询的常用特性，如JOIN等。
- 加载数据进指定分区。
- 如何使用Hive自带函数。
- 如何使用自定义函数进行查询分析，如何创建、定义自定义函数请见[创建Hive用户自定义函数](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_0963.html)。
![](https://support.huaweicloud.com/devg-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
在启用了安全服务的集群中执行如下操作，需要对涉及的表具有与操作对应的权限。
#### 样例代码
```
-- 查看薪水支付币种为美元的雇员联系方式. 
SELECT  
a.name,  
b.tel_phone,  
b.email  
FROM employees_info a JOIN employees_contact b  ON(a.id = b.id) WHERE usd_flag='D'; 
 
-- 查询入职时间为2014年的雇员编号、姓名等字段，并将查询结果加载进表employees_info_extended中的入职时间为2014的分区中. 
INSERT OVERWRITE TABLE employees_info_extended PARTITION (entrytime = '2014')  
SELECT  
a.id,  
a.name,  
a.usd_flag,  
a.salary,  
a.deductions,  
a.address, 
b.tel_phone, 
b.email  
FROM employees_info a JOIN employees_contact b ON (a.id = b.id) WHERE a.entrytime = '2014'; 
 
-- 使用Hive中已有的函数COUNT()，统计表employees_info中有多少条记录. 
SELECT COUNT(*) FROM employees_info; 
 
-- 查询使用以“cn”结尾的邮箱的员工信息. 
SELECT a.name, b.tel_phone FROM  employees_info a JOIN employees_contact b ON (a.id = b.id) WHERE b.email like '%cn';
```
#### 扩展使用
- 配置Hive中间过程的数据加密 指定表的格式为RCFile(推荐使用)或SequenceFile，加密算法为ARC4Codec。SequenceFile是Hadoop特有的文件格式，RCFile是Hive优化的文件格式。RCFile优化了列存储，在对大表进行查询时，综合性能表现比SequenceFile更优。
  ```
  set hive.exec.compress.output=true; 
   set hive.exec.compress.intermediate=true; 
   set hive.intermediate.compression.codec=org.apache.hadoop.io.encryption.arc4.ARC4Codec;
  ```
  
- 自定义函数，具体内容请参见[创建Hive用户自定义函数](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_0963.html)。
 
