您的位置:首页 > 其它

HIVE入门知识一

2020-07-12 16:58 134 查看

什么是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/’。
举例:
每天收集到的网站数据,需要做大量的统计数据分析,所以在数据源上可以使用外部表进行存储,方便数据的共享,在做统计分析时候用到的中间表,结果表可以使用内部表,因为这些数据不需要共享,使用内部表更为合适。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: