大数据之hive实践一(基础)

预知识

数据仓库

数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成
的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant
)的数据集合,用于支持管理决策。
在这里插入图片描述

Hive与Hadoop生态系统中其他组件的关系

在这里插入图片描述

1.Hive基本概念

1.1 什么是 Hive

Hive:由 Facebok 开源用于解决海量结构化日志的数据统计。
Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类 SQL 查询功能。
本质是:将 HQL 转化成 MapReduce 程序
在这里插入图片描述
1)Hive 处理的数据存储在 HDFS
2)Hive 分析数据底层的实现是 MapReduce
3)执行程序运行在 Yarn 上

1.2 Hive 的优缺点

1.21 优点

  1. 操作接口采用类 SQL 语法,提供快速开发的能力(简单、容易上手)。
  2. 避免了去写 MapReduce,减少开发人员的学习成本。
  3. Hive 的执行延迟比较高,因此 Hive 常用于数据分析,对实时性要求不高的场合。
  4. Hive 优势在于处理大数据,对于处理小数据没有优势,因为 Hive 的执行延迟比较高。
  5. Hive 支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。

1.2.2缺点

1.Hive 的 HQL 表达能力有限
(1)迭代式算法无法表达
(2)数据挖掘方面不擅长

2.Hive 的效率比较低
(1)Hive 自动生成的 MapReduce 作业,通常情况下不够智能化
(2)Hive 调优比较困难,粒度较粗

1.3 Hive 架构原理

在这里插入图片描述

1.4 Hive 和数据库比较

在这里插入图片描述

存储位置hdfs本地文件系统中
引擎mp自己的

由于数据的访问延迟较高,决定了 Hive 不适合在线数据查询
特点:Hive处理的数据规模更大,所以延迟性高,且存储在hdfs上

2.安装及启动

2.1环境

ubuntu 16.04
hadoop 2.2.1
hive 2.1.0(可通过JPS命令,找到RunJar对应的id,执行lsof -g 17860 | grep hive-service查到)
mysql 5.7

2.2Hadop 集群配置

cd /usr/local/hadoop
(1)必须启动 hdfs 和 yarn
[atguigu@hadop102 hadop-2.72]$ sbin/start-dfs.sh
[atguigu@hadop103 hadop-2.72]$ sbin/start-yarn.sh
(2)在 HDFS 上创建/tmp 和/usr/local/hive/warehouse 两个目录并修改他们的同组权限可写
[atguigu@hadop102 hadop-2.72]$ bin/hadop fs -mkdir /tmp
[atguigu@hadop102 hadop-2.72]$ bin/hadop fs -mkdir -p /usr/local/hive/warehouse
[atguigu@hadop102 hadop-2.72]$ bin/hadop fs -chmod g+w /tmp
[atguigu@hadop102 hadop-2.72]$ bin/hadop fs -chmod g+w /user/hive/warehouse 或者在配置文件中关闭权限检查 在 hadop 的 hdfs-site.xml 中

dfs.permisions.enable
false

3.Hive 基本操作
(1)启动 hive
[atguigu@hadop102 hive]$ bin/hive
(2)查看数据库
hive> show datbase;
(3)打开默认数据库
hive> use default;
(4)显示 default 数据库中的表
hive> show tables;
(5)创建一张表
hive> create table student(id int, name string);
(6)显示数据库中有几张表
hive> show tables;
(7)查看表的结构
hive> desc student;
(8)向表中插入数据
hive> insert into student values(10,“s”);
(9)查询表中数据
hive> selct * from student;
(10)退出 hive
hive> quit;

2.3 将本地文件导入 Hive 案例

需求
将本地/opt/module/datas/tudent.txt 这个目录下的数据导入到 hive 的 student(idnt,ame
string)表中。
1.数据准备
在/opt/module/dats 这个目录下准备数据
(1)在/opt/module/目录下创建 datss
mkdir datas
(2)在/opt/module/datss/目录下创建 student.x 文件并添加数据

 touch student.txt
 vi student.xt

101 zhangshan
102 lishi
103 zhaoliu

注意以 tab 键间隔。
2.Hive 实际操作
(1)启动 hive

hive>bin/hive 

(2)显示数据库

hive> show datbase; 

(3)使用 default 数据库

hive> use default; 

(4)显示 default 数据库中的表

hive> show tables; 

(5)删除已创建的 student 表

hive> drop table student; 

(6)创建 student 表, 并声明文件分隔符’\t hive> create table student(id int, name string) ROW FORMAT DELIMTED FIELDS TERMINATED
BY ‘\t’;
(7)加载/opt/module/dats/tudent.txt 文件到 student 数据库表中。 双引号也可以

hive> load data local inpath '/usr/local/datas/student.txt' into table student; 

(8)Hive 查询结果

hive> select * from student;

OK
101 zhangshan
102 lishi
103 zhaoliu
Time taken: 0.26 seconds, Fetched: 3 row(s)

2.4 MySql 安装

切换管理员账户,数据密码(hive默认存储derby数据库,不能同时启动两个以上)

sudo service mysql start
service mysql status
mysql -uroot -p密码
use mysql;
selct user, Host, from user; 

修改 user 表,把 Host 表内容修改为%

update user set host='% wher host='localhost'; 

删除 root 用户的其他 host

mysql>delte from user where Host='127.0.1';

刷新

mysql>flush privilegs; 

退出

mysql>quit;

2.5 Hive 元数据配置到 MySql

驱动拷贝
配置 Metasore 到 MySql
hive/conf 目录下创建一个 hive-site.xml.
根据官方文档配置参数,拷贝数据到 hive-site.xml 文件中
https://cwik.apche.org/confluence/display/Hive/AdminManual+MetasoreAdmin

2.6 Hive 常用交互命令

bin/hive -help
1.“-e”不进入 hive 的交互窗口执行 sql 语句

bin/hive -e "select id from student;" 

2.“-f”执行脚本中 sql 语句
(1)在/usr/local/data 目录下创建 hivef.sql 文件

 touch hivef.sql

文件中写入正确的 sql 语句

selcet  * from student;

(2)执行文件中的 sql 语句

 bin/hive -f /usr/local/data/hivef.sql

(3)执行文件中的 sql 语句并将结果写入文件中

 bin/hive -f /usr/local/datahivef.sql > /opt/module/dats/hive_result.txt

第 3 章 Hive 数据类型

3.1 基本数据类型

在这里插入图片描述
于 Hive 的 String 类型相当于数据库的 varchar 类型,该类型是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上可以存储 2GB 的字符数。

3.2集合数据类型

在这里插入图片描述
Hive 有三种复杂数据类型 ARRAY、MAP 和 STRUCT。ARRAY 和 MAP 与 Java 中的
Array 和 Map 类似,而 STRUCT 与 C 语言中的 Struct 类似,它封装了一个命名字段集合,
复杂数据类型允许任意层次的嵌套。

实操:
某一表的数据结构如图:
在这里插入图片描述
1.基于上述数据结构,在 Hive 里创建对应的表,并导入数据。

在这里插入图片描述
在这里插入图片描述
2.创建表
在这里插入图片描述
row format delimted fields terminated by ', '- 列分隔符
collection items terminated by ‘_’ -MAP STRUCT 和 ARAY 的分隔符(数据分割
符号) map keys terminated by ‘:’ -MAP 中的 key 与 value 的分隔符
lines terminated by ‘\n’; - 行分隔符
3.加载数据
在这里插入图片描述
4.访问数据
在这里插入图片描述
array
在这里插入图片描述

map
在这里插入图片描述

struct
在这里插入图片描述

3. 3类型转化

隐式转换类似java,强行转换用cast

1.隐式类型转换规则如下
(1)任何整数类型都可以隐式地转换为一个范围更广的类型,如 TINYINT 可以转换
成 INT,INT 可以转换成 BIGNT。
(2)所有整数类型、FLOAT 和 STRING 类型都可以隐式地转换成 DOUBLE。
(3)TINYINT、SMALINT、INT 都可以转换为 FLOAT。(除了bigint)
(4)BOLEAN 类型不可以转换为任何其它的类型。

2.可以使用 CAST 操作显示进行数据类型转换
例如 CAST('1 ’ AS INT)将把字符串’1 转换成整数 1;如果强制类型转换失败,如执行
CAST('X AS INT),表达式返回空值 NULL。
在这里插入图片描述
在这里插入图片描述
参考尚硅谷的HIVE教程,林子雨《大数据技术原理与应用》课件

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值