HIVE入门学习

HIVE

数据仓库和数据库的区别

数据库与数据仓库的区别:实际讲的是OLTP与OLAP的区别
OLTP(On-Line Transaction Processin):叫联机事务处理,也可以称面向用户交易的处理系统, 主要面向用户进行增删改查

OLAP(On-Line Analytical Processing):叫联机分析处理,一般针对某些主题的历史数据进行分析 主要面向分析,支持管理决策。

数据仓库主要特征:
1.面向主题的(Subject-Oriented )
2.集成的(Integrated)
3.非易失的(Non-Volatile)
4.时变的(Time-Variant)

数据仓库的出现,并不是要取代数据库,主要区别如下:
数据库是面向事务的设计,数据仓库是面向主题设计的。
数据库是为捕获数据而设计,数据仓库是为分析数据而设计
数据库一般存储业务数据,数据仓库存储的一般是历史数据
数据库设计是尽量避免冗余,一般针对某一业务应用进行设计,比如一张简单的User表,记录用户名、密码等简单数据即可,符合业务应用,但是不符合分析。
数据仓库在设计是有意引入冗余,依照分析需求,分析维度、分析指标进行设计。

数据库的操作

知识点

注意: location路径默认是:  hdfs://node1:8020/user/hive/warehouse

删除数据库: drop database 数据库名 [cascade];

修改数据库路径: alter database 库名 set location 'hdfs://node1.itcast.cn:8020/路径'
修改数据库属性: alter database 库名 set dbproperties ('k'='v');
修改当前数据库: use 库名;

查看指定数据库信息: desc database 库名;
查看指定数据库扩展信息: desc database extended 库名;
查看当前使用的数据库: select current_database();
查看所有的数据库: show databases;
查看某库建库语句: show create database 库名;

练习

create database db1;
create database if not exists db2;
create database if not exists db3 comment 'db3' ;
create database if not exists db4 comment 'db4' location '/binzi';
create database if not exists db5 comment 'db5'  location '/binzi' with dbproperties ('binzi'='666');



-- 查看所有数据库
show databases;
-- 查看指定数据库信息
desc database db2;
desc database db4;
desc database db5;
-- 查看指定数据库的扩展信息
desc database extended db5;
-- 查看当前使用的数据库
select current_database();
-- 查看指定建库语句
show create database db2;1



-- 删除空数据库
drop database db1;
-- 注意: db4和db5共用一个路径,删除db4直接把对应路径删除
drop database db4;

-- 演示在db5创建数据表(仅用于测试)
-- 切换/使用数据库
use db5;
-- 注意: 如果没有对应的location路径,建表的时候会先创建对应location路径
create table test1(id int ,name string);

-- 删除有表的数据库
-- 注意: drop不能直接删除有表的数据库
drop database db5; -- 报错
-- cascade关键字: 删除有表的数据库
drop database db5 cascade ;



-- 查看当前使用的数据库
select current_database();
-- 查看所有数据库
show databases;
-- 为了测试创建一个数据库,默认路径: /user/hive/warehouse/db5.db
create database if not exists db5  with dbproperties ('binzi'='666');
-- 创建测试表路径默认到/user/hive/warehouse/db5.db/test1
create table test1(id int ,name string);

-- 修改路径location
-- 注意: 修改路径仅针对后面创建的表存储位置发生改变,原来已有的表路径不变
alter database db5 set location 'hdfs://node1.itcast.cn:8020/binzi';
desc database db5;
-- 再次创建测试表,路径存储到新的location位置/binzi/test2
create table test2(id int ,name string);

-- 修改数据库属性
-- 先查看属性
desc database extended db5;
-- 修改属性
alter database db5 set dbproperties ('binzi'='888');
-- 再次查看属性
desc database extended db5;

数据表的操作

分隔符

默认分隔符: 展示形式是 SOH , /0001 ,□等
自定义分隔符:...row format delimited fields terminated by '指定分隔符'

内部表

知识点

删除内部表: drop table 内部表名;       注意: 删除mysql中元数据同时也会删除hdfs中存储数据

修改表名: alter table 旧表名 rename to 新表名;
修改表字段名称和类型: alter table 表名 change 旧字段名 新字段名 新字段类型;
修改表之添加字段(): alter table 表名 add columns (字段名 字段类型);
修改表之替换字段():alter table 表名 replace columns (字段名 字段类型);

查看所有表: show tables;
查看指定表基本信息: desc 表名; 
查看指定表扩展信息: desc extended 表名;
查看指定表格式信息: desc formatted 表名;
查看指定表建表语句: show create table 表名;
练习
create database myhive;
use myhive;
-- 1.内部表操作: 创建内部表
-- 创建普通数据表
create table if not exists stu(id int ,name string);
-- 插入数据
insert into stu values(1,'张三');
-- 查询所有数据
select * from stu;
-- 上述stu使用的是默认分隔符:展示形式是 /0001,SOH,□...
-- 键盘不好输入,需要自定指定分隔符

--
-- 创建普通数据表: 指定分隔符
create table if not exists stu1(
    id int ,
    name string
)
row format delimited fields terminated by ',';
-- 插入数据
insert into stu1 values(1,'李四');
-- 查询所有数据
select * from stu1;


-- 其他创建内部表的形式
-- 建表时复制其他表的结构和数据: create table 表名 as select语句
create table stu2 as select * from stu1;

-- 建表时复制其他表的结构: create table 表名 like 其他表名;
create table stu3 like stu1;

-- 2.查看表
-- 查看所有表
show tables;
-- 查看指定表基本信息
desc stu1;
-- 查看指定表扩展信息
desc extended stu1;
-- 查看指定表格式后的信息
desc formatted stu1;
-- 查看指定表建表语句
show create table stu1;


-- 3.修改表
-- 修改表名
alter table stu1 rename to stu111;
-- 修改表字段:添加列
alter table stu2 add columns (gender int);
-- 修改表字段:改名称和类型
alter table stu2 change id sid string;
-- 修改表字段:替换列(删除/添加)
alter table stu2 replace columns (sid string);
alter table stu2 replace columns (sid string,age int);

-- 4.删除表
drop table stu111;
truncate table stu;

请简述hive元数据服务配置的三种模式?

参考答案:

内嵌模式:
    优点: 配置简单 hive命令直接可以使用
    缺点: 不适用于生产环境,derby和Metastore服务都嵌入在主Hive Server进程中,一个服务只能被一个客户端连接(如果用两个客户端以上就非常浪费资源),且元数据不能共享

    
本地模式: 
    优点:可以单独使用外部的数据库(mysql),元数据共享
    缺点:相对浪费资源,metastore嵌入到了hive进程中,每启动一次hive服务,都内置启动了一个metastore。
    
远程模式:
    优点:可以单独使用外部库(mysql),可以共享元数据,本地可以连接metastore服务也可以连接hiveserver2服务,增加了扩展性(其他依赖hive的软件都可以通过Metastore访问hive)
    缺点:需要注意的是如果想要启动hiveserver2服务需要先启动metastore服务

数据库和数据仓库的区别?

参考答案:

	数据仓库与数据库的区别:实际讲的是OLTP与OLAP的区别,OLTP(On-Line Transaction Processin):叫联机事务处理,也可以称面向用户交易的处理系统,主要面向用户进行增删改查,OLAP(On-Line Analytical Processing):叫联机分析处理,一般针对某些主题的历史数据进行分析 主要面向分析,支持管理决策。

	数据仓库的出现,并不是要取代数据库,主要区别如下:数据库是面向事务的设计,数据仓库是面向主题设计的。数据库是为捕获数据而设计,数据仓库是为分析数据而设计.数据库一般存储业务数据,数据仓库存储的一般是历史数据。数据库设计是尽量避免冗余,一般针对某一业务应用进行设计,比如一张简单的User表,记录用户名、密码等简单数据即可,符合业务应用,但是不符合分析。数据仓库在设计是有意引入冗余,依照分析需求,分析维度、分析指标进行设计。

简述下数仓经典三层架构?

参考答案:

	数据仓库是一个面向主题的、集成的、持久的(非易失的)、反映历史变化(随时间变化),用来支持管理人员决策的数据集合,按照数据流入流出的过程,数据仓库架构可分为三层——源数据层、数据仓库层、数据应用层。

	源数据层(ODS-Operational Data Store):此层数据无任何更改,直接沿用外围系统数据结构和数据,不对外开放;为临时存储层,是接口数据的临时存储区域,为后一步的数据处理做准备。

	数据仓库层(DW-Data Warehouse):也称为细节层,DW层的数据应该是一致的、准确的、干净的数据,即对源系统数据进行了清洗(去除了杂质)后的数据。

	数据应用层(DA-Data Application):前端应用直接读取的数据源;根据报表、专题分析需求而计算生成的数据。
  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值