Hive数据仓库踏坑(上)

本文介绍了Hive作为数据仓库工具的优势与局限性,包括其与传统数据库的区别,以及Hive在大数据处理中的角色。详细讲解了Hive的元数据管理,启动beeline服务,数据类型,以及数据表的创建、管理,特别强调了内部表与外部表的区别。同时,文章还深入探讨了数据导入导出、查询操作,包括JOIN、分组、排序等,最后提到了Hive的性能优化和函数应用。
摘要由CSDN通过智能技术生成

Hive数据仓库

了解!!!

大数据解三个问题:(1)海量(PB级以上,EB,ZB,YB等)数据的传输 (2)海量数据的存储(3)海量数据的计算

​ 常识:b—>B—>KB—>MB—>GB—>TB—>PB—>EB—>ZB—>YB等等

Hive:由Facebook开源用于解决海量结构化日志的数据统计

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能

Hive本身不存储数据,他就是提供了一种管理方式

本质是:将HQL转化成Map Reduce程序——>>好处:减少开发人员的学习成本,方便任务的运行,降低开发成本

[外链图片转存失败(img-fb8EJ0js-1568646957729)(C:\Users\tt\AppData\Roaming\Typora\typora-user-images\1567873134632.png)]

1)Hive处理的数据存储在HDFS(Hive相当于Hadoop的客户端)

2)Hive分析数据底层的默认实现是Map Reduce(可以修改)

3)执行程序运行在Yarn上(资源调度)

**Hive优点:**Hive的执行延迟比较高,因此Hive常用于数据分析,对实时性要求不高的场合使用

​ Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数

**Hive缺点:**Hive的HQL表达能力有限

​ (1)迭代式算法无法表达

​ (2)数据挖掘方面不擅长

​ Hive的效率比较低

​ (1)Hive的自动生成的Map Reduce(吞吐量大,但是速度比较慢)作业,通常情况下不够智能化

​ (2)Hive调优比窘困难,力度较粗

Hive架构原理

[外链图片转存失败(img-MWJ3aKqv-1568646957733)(C:\Users\tt\AppData\Roaming\Typora\typora-user-images\1567874233103.png)]

[外链图片转存失败(img-Csv3WIfV-1568646957734)(C:\Users\tt\AppData\Roaming\Typora\typora-user-images\1567874855591.png)]

Hive和数据库比较

​ 除了查询语言类似,其他一切关系都没有(不要有什么联想)

​ HIve是建立在Hadoop之上的,所有的Hive的数据都是存储在HDFS中的,而数据库可以将数据保存在块设备 或者本地文件系统中

​ Hive一次写入多次读出,在Hive中不建议对数据进行改写,所有的数据都是加载的时候确定好的

​ 数据库更多的是进行实时的增删改查。

​ Hive(处理数据量大)不能建立索引(计算引擎就是Map Reduce),查询的时候只能取扫描更多的(全盘)数据(比较暴 力),因此访问延迟比较高。数据库MySQL(处理数据量小)的计算引擎是InnoDB

北美大数据Hive笔记

  • 掌握Hive数据类型
  • 掌握Hive的数据库和表的操作
  • 掌握Hive的数据分区

理解Hive的数据分桶,视图(view)

0909,主要学DDL

将结构化的数据文件映射为数据库表

提供类SQL的查询语言HQL

主要是解决海量数据的结构化分析

Hive是Hadoop的客户端,HQL类SQL语法,简化MR开发。

  • 提供了简单的优化模型,支持在HDFS和HB上临时查询数据,
  • 支持用户自定义函数,格式。
  • 成熟的JDBC和ODBC驱动程序,用于ETL和BI(商业智能)
  • 稳定可靠(真实生产环境)的批处理,有庞大活跃的社区
工作中 工作效率+开发效率相互权衡。
Hive元数据管理
  • 记录数据仓库中模型的定义,各层级的映射关系

  • 存储在关系数据库中

    ​ 默认Derby(单用户单线程),轻量级内嵌SQL数据库

    ​ Derby非常适合测试和演示

    ​ 存储在.metastore_db目录中

    ​ 实际生产一般存储在MySQL中

    ​ 修改设置文件hive-site.xml

    • Hcatalog

      ​ 将Hive元数据共享给其他应用程序

    [外链图片转存失败(img-Vu20k8PM-1568646957738)(C:\Users\tt\AppData\Roaming\Typora\typora-user-images\1567991359461.png)]

启动beeline服务
//用hive也可以 ,就是用这个好看,自动生成表格。
[root@sandbox-hdp ~]# beeline -u 'jdbc:hive2://localhost:10000/default'
//关闭
[root@sandbox-hdp ~]# lill -9

**[外链图片转存失败(img-cjqpFNJW-1568646957740)(C:\Users\tt\AppData\Roaming\Typora\typora-user-images\1567993017561.png)]**

命令行模式:就是上面图片的第三条语句(两条语句使用一下)。不是交互式的

最右面的一整列都可以使用

[外链图片转存失败(img-MdEBAS2t-1568646957742)(C:\Users\tt\AppData\Roaming\Typora\typora-user-images\1567993313713.png)]

[外链图片转存失败(img-UcrUhvWs-1568646957744)(C:\Users\tt\AppData\Roaming\Typora\typora-user-images\1567993536997.png)]

使用环境

[外链图片转存失败(img-umleDCFl-1568646957747)(C:\Users\tt\AppData\Roaming\Typora\typora-user-images\1567993622530.png)]

上面的图片有展现工具,Hive的jdbc工具。

CDH的用Hues HDP 适用于Ambari Hiew View

下载HUE界面,有图标界面。

[外链图片转存失败(img-a5EQ9YWW-1568646957747)(C:\Users\tt\AppData\Roaming\Typora\typora-user-images\1567994050274.png)]

[外链图片转存失败(img-AXpEiSHT-1568646957748)(C:\Users\tt\AppData\Roaming\Typora\typora-user-images\1567994091454.png)]

[外链图片转存失败(img-WFZNiegK-1568646957751)(C:\Users\tt\AppData\Roaming\Typora\typora-user-images\1567994286936.png)]

上面加黑加粗为常用重点。(4个)

[外链图片转存失败(img-Du71w0zn-1568646957752)(C:\Users\tt\AppData\Roaming\Typora\typora-user-images\1567996638786.png)]

[外链图片转存失败(img-YGD3cEkB-1568646957754)(C:\Users\tt\AppData\Roaming\Typora\typora-user-images\1568038705663.png)]

对于Hive的String类型相当于数据库中的varchar类型,给类型是一个可变的字符串,不过她不能声明其中最能存储多少个字符,理论上它可以存储2GB的字符数。

Hive数据类型 - 复杂数据类型
ARRAY:存储的数据卫星同数据类型
MAP:具有相同类型的键值队
STRUCT:封装了一组字段(结构体,跟业务相关,可以组成对象,取值的时候c.weight=2 c相当于列的名字)

[外链图片转存失败(img-zM3LmCFc-1568646957755)(C:\Users\tt\AppData\Roaming\Typora\typora-user-images\1567994490770.png)]

Hive元数据存储结构
数据结构 描述 逻辑关系 物理存储(HDFS)
Database 数据库 表的结合 文件夹
Table 行数据集合 文件夹
Partition 分区 用于分割数据 文件夹
Buckts 分桶 用于分布数据 文件
Row 行记录 文件中的行
Columns 列记录 每行中指定的位置
Views 视图 逻辑给你按,可跨越多张表 不存储数据
Index 索引 记录统计数据信息 文件夹

分区Partition是在表的基础上取优化,

数据库(Database)

​ 表的集合,HDFS中表现为一种文件夹

​ 默认为在hive.metastore.warehouse.dir属性目录下

[外链图片转存失败(img-s6KuaFud-1568646957758)(C:\Users\tt\AppData\Roaming\Typora\typora-user-images\1567995563453.png)]

建库建表

0: jdbc:hive2://localhost:10000/default> create database if not exists myhivebook;
No rows affected (1.405 seconds)
0: jdbc:hive2://localhost:10000/default> show databases;
+----------------+--+
| database_name  |
+----------------+--+
| default        |
| foodmart       |
| myhivebook     |
| xademo         |
+----------------+--+
4 rows selected (0.546 seconds)
0: jdbc:hive2://localhost:10000/default> 

Hive中的注释:–我在你 。。。注释中不要出啊先分号(;)

数据表(内部表/外部表)

[外链图片转存失败(img-YAPdMUsJ-1568646957759)(C:\Users\tt\AppData\Roaming\Typora\typora-user-images\1567997355725.png)]

免面试题:Hive内部表和外部表概念?区别?最实用的场景?

[外链图片转存失败(img-z2JBmJSo-1568646957759)(C:\Users\tt\AppData\Roaming\Typora\typora-user-images\1567997537063.png)]

第四章 DDL数据定义语言(库的增删改查以及表的增删改查)

创建数据库,数据库在HDFS上默认存储路径是/user/hive/warrehouse/*.db

//在hive中存放文件夹的路径 pwd查看根目录

[root@sandbox-hdp ~]# cd /home/hive/

//显示数据库
hive> show databases;
//使用 default 数据库
hive> use default;
//显示 default 数据库中的表
hive> show tables;
//删除已创建的 student 表
hive> drop table student;
//创建 student 表, 并声明文件分隔符’\t’
hive> create table student(id int, name string) ROW FORMAT DELIMITED FIELDS
TERMINATED
BY '\t';
//加载/opt/module/datas/student.txt 文件到 student 数据库表中。
hive> load data local inpath '/opt/module/datas/student.txt' into table student;
//Hive 查询结果
hive> select * from student;
OK
1001 zhangshan
1002 lishi
1003 zhaoliu
Time taken: 0.266 seconds, Fetched: 3 row(s)

//创建数据库   名字为hive_db,默认路径为/user/hive/下面
hive> create database hive_db;
//创建数据库(要在数据库下面)
create database hive_db;
//指定目录下创建数据库(根目录)location
hive> create database hive_db2 location '/';
//创建一个表,默认路径是根路径下
create table hive_db.test(id int);
//查看所有数据库
hive> show databases;
//标准写法:if not exists,创建数据库的标准写法,防止出现名字相同
hive> create database if not exists hive_db;
OK
Time taken: 0.034 seconds
hive> 
//模糊查询:查询数据库的详情
hive> show databases like 'hive*';
OK
hive_db
hive_db2
Time taken: 0.035 seconds, Fetched
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值