什么是HIVE
1.数据仓库解决方案建立在Hadoop之上
2.提供了sql查询语言命名蜂巢HQL查询语言,最小的学习曲线
3.HIVE早期开发工作从2007年开始在Facebook
4.HIVE使越来越多的人开始使用
5.HIVE是一个Apache Hadoop项目hive.apache.org
HIVE的优点
- 提供了一个简单,优化模型与编码
- HQL和SQL有相似的语法和高生产率
- HIVE支持运行在不同的计算框架
- HIVE支持HDFS数据查询和HBase
- HIVE支持用户定义函数,脚本,自定义格式
- 实现用JABC和ODBC 提供ETL数据的转化或者BI报表可视化
- 稳定可靠的批量加工
- HIVE有一个很大的活跃社区
Hive元数据管理
- 支持模式和数据分区 利用关系型数据库Relational Database
- 默认 使用Derby,轻量级内嵌SQL数据库
简单BI Tool的演示Zeppelin -Hive
Data Type 原始数据类型
复杂数据类型
HIVE META DATA STRUCTURE元数据总览
Hive Tables
外部表External Tables
数据保存在未知关键字指定的HDFS路径中,Hive无法完全管理数据 删除表(元数据)数据不会删除
内部表Internal Tables/Managed Table
数据保存在默认路径中 例如/user/hive/warehouse/employee 数据完全由hive管理 删除表(元数据)数据会完全删除
面试中对Hive表的三连问
什么是外部内部表?有什么区别/如何使用?
外部表External Tables 实际数据保存在location关键字指定的HDFS路径中 数据不由Hive完全管理 当删除外部表时数据不会丢失可以从HDFS中找到 内部表Internal Tables/Managed Table 数据保存在hive中 完全由hive来管理 当删除表时 数据直接丢失
Hive建外部表表的基础语句
语法:
create external table if not exists table_name(
...
)
comment'This is external table'
row format delimited
fields terminated by '|'
map keys terminated by ','
location '位置路径'
查找表命令练习
- show tables;show tables '*sam*'; show tables '*sam|lily*'查看表种含有sam lily的
- show table extended like table_name 查勘表的详细内容
- desc [formatted | extended] table_name
- show create table table_name;
- show columns table_name;
- show tblproperties tblname;
Hive 建表高阶语句 CTAS and WITH
CATS--create table as select
create table ctas_employee as select * from employee (将employee表的所有内容复制到ctas_employee表中)
CTAS 不能创建一个 分区的,外部的,或者bucket(桶)表
CTAS with 公共表达式
CREATE TABLE cte_employee AS
WITH
r1 AS (SELECT name FROM r2 WHERE name = 'Michael'),
r2 AS (SELECT name FROM employee WHERE sex_age.sex= 'Male'),
r3 AS (SELECT name FROM employee WHERE sex_age.sex= 'Female')
SELECT * FROM r1 UNION ALL SELECT * FROM r3;(展示r1,r3的结果整合重回复数据)