文章目录
hive基础
hive简介
什么是hive?
hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。
Hive的优势和特点:
- 提供了一个简单的优化模型
- HQL类SQL语法,简化MR开发
- 支持在不同的计算框架上运行
- 支持在HDFS和HBase上临时查询数据
- 支持用户自定义函数、格式
- 成熟的JDBC和ODBC驱动程序,用于ETL和BI
- 稳定可靠(真实生产环境)的批处理
- 有庞大活跃的社区
hive元数据管理
记录数据仓库中模型的定义、各层级间的映射关系
存储在关系数据库中
- 默认Derby, 轻量级内嵌SQL数据库
1、Derby非常适合测试和演示
2、存储在.metastore_db目录中 - 实际生产一般存储在MySQL中
修改配置文件hive-site.xml
hive体系结构
hive interface
命令窗口模式
有两种工具:Beeline和Hive命令行
有两种模式:命令行模式和交互模式
命令行模式
交互模式
- 使用hive
hive
- 使用beeline
beeline -u "jdbc://hive2://localhost:10000/default"
其他使用环境
- Hive Web Interface (As part of Apache Hive)
- Hue(Cloudera)
- Ambari Hive View (Hortonworks)
- JDBC/ODBC(ETL工具,商业智能工具,集成开发环境)
hive数据类型
原始数据类型
类似于SQL数据类型
复杂数据类型
ARRAY:存储的数据为相同类型
MAP:具有相同类型的键值对
STRUCT:封装了一组字段
hive元数据结构
hive中的库和表
数据库:
数据库:表的集合,HDFS中表现为一个文件夹
- 默认在hive.metastore.warehouse.dir属性目录下
如果没有指定数据库,默认使用default数据库
表:
分为内部表和外部表
内部表(管理表)
- HDFS中为所属数据库目录下的子文件夹
- 数据完全由hive管理,删除表(元数据)会删除数据
外部表
- 数据保存在指定位置的HDFS路径中
- hive不完全管理数据,删除表(元数据)不会删除数据
建表语句:
CREATE EXTERNAL TABLE IF NOT EXISTS employee_external (
name string,
work_place ARRAY<string>,
sex_age STRUCT<sex:string,age:int>,
skills_score MAP<string,int>,
depart_title MAP<STRING,ARRAY<STRING>>
)
COMMENT 'This is an external table' --说明
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '|' --分隔列
COLLECTION ITEMS TERMINATED BY ',' --分隔集合
MAP KEYS TERMINATED BY ':' --分隔映射
STORED AS TEXTFILE --文件存储格式
LOCATION '/user/root/employee'; --数据存储路径
EXTERNAL
关键字可以让用户创建一个外部表,默认是内部表。
row format delimited
这里指定表存储中列的分隔符,默认是\001
,这里指定的是逗号分隔符&#x