Hive

Hive

1.数据库的OLTP(联机事务处理)

  • 针对数据的事务处理
  • ACID原则(原子性,一致性,持久性,隔离性)
  • 描述了数据库当前的状态
  • 数据库的隔离级别
    • 读未提取
    • 读已提取
    • 可重复读
    • 序列化

OLAP(联机分析处理)

  • 我们发现分析一些历史数据可以获取利益
  • 我们会将以前的数据汇集到一起进行分析
  • 于是我们需要建立数据仓库

2,数据仓库(Data Warehouse)

  • 主要用来存放数据,而且这些数据不会被修改
  • 数据的来源非常广泛
    • 商品的订单信息
    • 网站的访问日志
    • 网站的问卷调查

3.Hive的简介

  • 非java编程者对HDFS的数据做mapreduce操作

  • 原来做数据清洗或者数据分析,可以使用MapReduce

  • 但是MapReduce需要有一定的java开发基础,但是数据的管理者可能是其他语言的程序员

  • 这样就为现行的开发带来了不便利

  • 通过研究绝大部分程序员都接触过sql语句

    • 直接写sql语句,然后将sql语句解析成MapReduce
  • 对数据的处理方式

    • admin,123456,18,180,shandong;
      zhangsan,123,16,160,shanxi;
      
      //首先将数据按照;分割  -->行
      //然后将数据按照,分割  -->列
      //将数据一一映射到表的列
      //Hive不用存储任何实际数据,HDFS存储,Hive只需要存放映射关系
      
  • 数据仓库是用来做查询分析的数据库,基本上不用来做 修改,删除操作

4,Hive原理和架构

客户端
  • 向Hive发送请求
    • DDL,DQL,DML整体仿写一套SQL语句
    • Hive允许client连接的方式有很多种
  • 常用的连接方式
    • client–需要下载安装包
    • JDBC/ODBC也可以连接到Hive
      • 现在主流都在倡导第二种HiveServer2/beeline
      • 做基于用户名和密码安全的一个校验
  • Web Gui
    • hive给我们提供了一套简单的web页面
    • 我们可以通过这套web页面访问hive
    • 页面太简陋了

MetaStore

  • 一般需要借助其他的数据载体(数据库)
  • 主要用于存放数据库的建表语句等信息
  • 推荐使用MySql数据库存放数据
  • 连接数据库需要提供:URL username password driver

Hive驱动

  • 接受客户端的请求
  • 里面主要包括(解释器,优化器,编译器,执行器)
  • 然后对SQL语句执行如下操作
    • 对客户端的SQL语句做语法语义的检测
    • 将SQL语句转成逻辑执行的方案
    • 对逻辑执行计划进行优化
    • 将逻辑执行计划转换成物理执行计划

5.Hive的基本命令

数据库
  • 显示数据库
    • show databases;
  • 创建数据库
    • create database if not exists sxt;
    • 创建数据库的时候会在配置的HDFs目录下新增一个同名文件夹
    • create database if not exists is locatin ‘/shsxt/ls’;
    • 一般情况下都会进将库放在一起,除非某些位置已经存在了库的数据
  • 使用和删除数据库
    • user shsxt;
    • drop database ls;
数据类型()
  • primitive type
    • 整型
      • TINYINT(byte) SMALLINT(short) INT(int) BIGINT(Long)
    • 浮点型
      • double float
    • 字符型
      • string varchar char
    • 布尔
      • boolean
    • 日期
      • date timestamp
  • array_type
    • array<data_type>
  • map_type
    • map<primitive_type,data_type>
  • struct_type
    • struct<col_name:value>

  • 一般都是现有数据,然后才根据数据的存放格式创建对应的表
--创建表
create table person(
id int,
name string,
age int,
likes array<string>,
addrs map<string,string>
)
row format delimited fields terminated by ','
COLLECTION ITEMS TERMINATED by '-'
map keys terminated by ':'
lines terminated by '\n';

//将数据导入到表中(注意符号错误)  
//从word拷贝出来的代码,先放在txt中初始化一下
LOAD DATA LOCAL INPATH '/root/person.txt' INTO TABLE person;

//覆盖--我是对的
LOAD DATA LOCAL INPATH '/root/person.txt' OVERWRITE INTO TABLE person;

select * from person;
select name,age,likes[0] from person;
select count(id) from person;
实例:person
1,zshang,18,game-girl-book,stu_addr:beijing-work_addr:shanghai
2,lishi,16,shop-boy-book,stu_addr:hunan-work_addr:shanghai
3,wang2mazi,20,fangniu-eat,stu_addr:shanghai-work_addr:tianjing
4,wang4mazi,21,fangniu-eat,s_addr:shanghai-w_addr:tianjing

首先一行就是一条记录
属性与属性之间用(,)分割,一行有5个属性
1  -->int
zshang -->string
18 -->int
game-girl-book -->string -->arary 用(-)分割
stu_addr:beijing-work_addr:shanghai --> map struct 都可以

实例:
{
    "name": "songso
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值