HIVE入门知识一
什么是Hive?
基于Hadoop的数据仓库解决方案
将结构化的数据文件映射为数据库表
提供类sql的查询语言HQL(Hive Query Language)
Hive让更多的人使用Hadoop
Hive成为Apache顶级项目
Hive始于2007年的Facebook
官网:hive.apache.org
Hive的优势和特点
提供了一个简单的优化模型
HQL类SQL语法,简化MR开发
支持在不同的计算框架上运行
支持在HDFS和HBase上临时查询数据
支持用户自定义函数、格式
成熟的JDBC和ODBC驱动程序,用于ETL和BI
稳定可靠(真实生产环境)的批处理
有庞大活跃的社区
Hive元数据管理
记录数据仓库中模型的定义、各层级间的映射关系
存储在关系数据库中
默认Derby, 轻量级内嵌SQL数据库
Derby非常适合测试和演示
存储在.metastore_db目录中
实际生产一般存储在MySQL中
修改配置文件hive-site.xml
HCatalog
将Hive元数据共享给其他应用程序
Hive Interface - 命令窗口模式
有两种工具:Beeline和Hive命令行(CLI)
有两种模式:命令行模式和交互模式
命令行模式
交互模式
两种启动方式
需要先启动hadoop 和zookeeper
hive启动
新开 hive
beeline启动
nohup hive --service hiveserver2 &
beeline -u jdbc:hive2://localhost:10000
数据库(Database)
表的集合,HDFS中表现为一个文件夹
默认在hive.metastore.warehouse.dir属性目录下
如果没有指定数据库,默认使用default数据库
create database if not exists myhivebook; use myhivebook; show databases; describe database default; --more details than ’show’, such as location alter database myhivebook set owner user dayongd; drop database if exists myhivebook cascade;
显示当前所在数据库:
select current_database();
数据表:
分为内部表和外部表
内部表(管理表)
HDFS中为所属数据库目录下的子文件夹
数据完全由Hive管理,删除表(元数据)会删除数据
外部表(External Tables)
数据保存在指定位置的HDFS路径中
Hive不完全管理数据,删除表(元数据)不会删除数据
面试题
Hive内部表和外部表概念?区别?最适合的应用场景?
内部表:看名字,限于内部使用。
删除内部表时,表的元数据和数据都会被删除。
外部表:看名字,可以外部共享。
删除外部表时,表的元数据会被删除,但是数据不会被删除。
适用场景:
由上面的描述可知,外部表可以大家一起使用,即便误删了也可以恢复,比如日志的原始数据。而内部表仅限于少数人使用,比如存储自己的中间结果。
外部表误删后的恢复:
创建一个新表指定到(location 数据路径)这个位置,那么数据就会恢复。数据路径例如’/hive/external_table/’。
举例:
每天收集到的网站数据,需要做大量的统计数据分析,所以在数据源上可以使用外部表进行存储,方便数据的共享,在做统计分析时候用到的中间表,结果表可以使用内部表,因为这些数据不需要共享,使用内部表更为合适。
- Java大数据学习19--数据仓库工具Hive入门知识介绍
- 网络知识入门:路由器基础知识全接触
- jQuery学习笔记 - 基础知识扫盲入门篇
- 入门机器学习需要预备哪些数学知识?
- DLL的入门知识
- javascript快速入门第一章基础知识(上)
- 大数据的五大核心技术,给大数据同行入门研究参考的小知识
- 学习总结之 Servlet入门知识 处理Request
- SVC入门知识和JSVM基础实验
- 入门Java所需要具备的基础知识(前言)及穿插个人体验
- 3S基础知识:MapInfo教程--二次开发入门
- 入门级计算机基础知识
- LDAP 入门知识
- Python基础学习-爬虫入门知识
- 知识图谱之入门篇
- 关于PL/SQL操作Oracle的入门知识
- Actviti工作流入门知识(流程变量) DAY-02
- Java入门的相关知识
- 《走进大数据之Hive入门》学习笔记(1)
- 前端制作入门知识