大数据Hive入门案例

简介: 大数据Hive入门案例

1 体验1:Hive使用起来和Mysql差不多吗?

1.1 背景

对于初次接触Apache Hive的人来说,最大的疑惑就是:Hive从数据模型看起来和关系型数据库mysql等好像。包括Hive SQL也是一种类SQL语言。那么实际使用起来如何?

1.2 过程

体验步骤:按照mysql的思维,在hive中创建、切换数据库,创建表并执行插入数据操作,最后查询是否插入成功。

create database itcast;--创建数据库
show databases;--列出所有数据库
use itcast;--切换数据库

9a5dce43bf164dc99b4caae97dbfc746.png

--建表
create table t_student(id int,name varchar(255));
--插入一条数据
insert into table t_student values(1,"allen");
--查询表数据
select * from t_student;

在执行插入数据的时候,发现插入速度极慢,sql执行时间很长,为什么?

最终插入一条数据,历史30秒的时间。

查询表数据,显示数据插入成功

1.3 验证

首先登陆Hadoop YARN上观察是否有MapReduce任务执行痕迹。

YARN Web UI: http://resourcemanager_host:8088/

然后登陆Hadoop HDFS浏览文件系统,根据Hive的数据模型,表的数据最终是存储在HDFS和表对应的文件夹下的。

HDFS Web UI: http://namenode_host:9870/

1.4 结论

➢ Hive SQL 语法和标准 SQL 很类似,使得学习成本降低不少。

➢ Hive 底层是通过 MapReduce 执行的数据插入动作,所以速度慢。

➢ 如果大数据集这么一条一条插入的话是非常不现实的,成本极高。

➢ Hive 应该具有自己特有的数据插入表方式,结构化文件映射成为表。

2 体验2:如何才能将结构化数据映射成为表?

2.1 背景

在Hive中,使用insert+values语句插入数据,底层是通过MapReduce执行的,效率十分低下。此时回到Hive的本质上:可以将结构化的数据文件映射成为一张表,并提供基于表的SQL查询分析。

假如,现在有一份结构化的数据文件,如何才能映射成功呢?在映射成功的过程中需要注意哪些问题?不妨猜想文件的存储路径?字段类型?字段顺序?字段之间的分隔符问题?


2.2 过程

在HDFS根目录下创建一个结构化数据文件user.txt,里面内容如下

1,zhangsan,18,beijing
2,lisi,25,shanghai
3,allen,30,shanghai
4,woon,15,nanjing
5,james,45,hangzhou
6,tony,26,beijing

在 hive 中创建一张表 t_user。注意: 字段的类型顺序要和文件中字段保持

一致。

create table t_user(id int,name varchar(255),age int,city varchar(255));

2.3 验证

执行数据查询操作,发现表中并没有数据。

猜想:难道数据文件要放置在表对应的HDFS路径下才可以成功?

再次执行查询操作,显示如下,都是null:

表感知到结构化文件的存在,但是并没有正确识别文件中的数据。猜想:还需要指定文件中字段之间的分隔符?重建张新表,指定分隔符。

--建表语句 增加分隔符指定语句
create table t_user_1(id int,name varchar(255),age int,city varchar(255))
row format delimited
fields terminated by ',';
--关于分隔符语法 后续学习展开
#把user.txt文件从本地文件系统上传到hdfs
hadoop fs -put user.txt /user/hive/warehouse/itcast.db/t_user_1/
--执行查询操作
select * from t_user_1;

此时再创建一张表,保存分隔符语法,但是故意使得字段类型和文件中不一致。

--建表语句 增加分隔符指定语句
create table t_user_2(id int,name int,age varchar(255),city varchar(255))
row format delimited
fields terminated by ',';
#把user.txt文件从本地文件系统上传到hdfs
hadoop fs -put user.txt /user/hive/warehouse/itcast.db/t_user_2/
--执行查询操作
select * from t_user_2;

此时发现,有的列显示null,有的列显示正常。

name字段本身是字符串,但是建表的时候指定int,类型转换不成功;age是数值类型,建表指定字符串类型,可以转换成功。说明hive中具有自带的类型转换功能,但是不一定保证转换成功。


2.4 结论

要想在hive中创建表跟结构化文件映射成功,需要注意以下几个方面问题:

➢ 创建表时,字段顺序、字段类型要和文件中保持一致。

➢ 如果类型不一致,hive会尝试转换,但是不保证转换成功。不成功显示null。

➢ 文件好像要放置在 Hive 表对应的 HDFS 目录下,其他路径可以吗?

➢ 建表的时候好像要根据文件内容指定分隔符,不指定可以吗?


3 体验3:使用hive进行小数据分析如何?

3.1 背景

因为Hive是基于HDFS进行文件的存储,所以理论上能够支持的数据存储规模很大,天生适合大数据分析。假如Hive中的数据是小数据,再使用Hive开展分析效率如何呢?


3.2 过程

之前我们创建好了一张表t_user_1,现在通过Hive SQL找出当中年龄大于20岁的有几个。

3.3 验证

--执行查询操作
select count(*) from t_user_1 where age > 20;

3.4 结论

➢ Hive 底层的确是通过 MapReduce 执行引擎来处理数据的

➢ 执行完一个 MapReduce 程序需要的时间不短

➢ 如果是小数据集,使用 hive 进行分析将得不偿失,延迟很高

➢ 如果是大数据集,使用 hive 进行分析,底层 MapReduce 分布式计算,很爽

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
3天前
|
存储 分布式计算 Hadoop
大数据之hadoop3入门到精通(一)
大数据之hadoop3入门到精通(一)
|
4天前
|
分布式计算 大数据 数据处理
Python入门与大数据处理环境配置指南
**Python入门与大数据处理环境配置** Python作为高级编程语言,因其简洁语法和丰富库资源,成为数据处理、AI和大数据分析首选。本文旨在介绍Python基础和环境配置,特别是针对大数据处理的环境搭建。首先,讲解Python语言基础,包括语言概述、基本语法(变量、数据类型、控制流语句、函数和模块)。接着,讨论如何安装Python环境,以及安装NumPy、Pandas等大数据处理库。对于大数据处理,可以选择本地环境或搭建分布式环境,如Hadoop和Spark,并提供相关API示例。最后,列出环境配置中可能遇到的问题及解决方案,如版本不兼容、库安装失败等,并提供参考资料以供深入学习。
20 3
|
1月前
|
SQL 分布式计算 DataWorks
MaxCompute产品使用合集之DataWorks体验案例绑定如何绑定到正确的maxcomputer引擎上
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
3天前
|
SQL 数据采集 数据可视化
基于Hive的招聘网站的大数据分析系统
基于Hive的招聘网站的大数据分析系统
|
3天前
|
SQL 关系型数据库 MySQL
基于Hive的天气情况大数据分析系统(通过hive进行大数据分析将分析的数据通过sqoop导入到mysql,通过Django基于mysql的数据做可视化)
基于Hive的天气情况大数据分析系统(通过hive进行大数据分析将分析的数据通过sqoop导入到mysql,通过Django基于mysql的数据做可视化)
|
3天前
|
存储 分布式计算 安全
大数据之hadoop3入门到精通(三)
大数据之hadoop3入门到精通(三)
|
3天前
|
SQL 资源调度 大数据
大数据之hadoop3入门到精通(二)
大数据之hadoop3入门到精通(二)
|
5天前
|
SQL 分布式计算 大数据
MaxCompute产品使用合集之启用hive兼容的时候,某个字段是null,是否会把这个字段当成空白连起来
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
23天前
|
存储 SQL JSON
一些MaxCompute日常优化案例分享
MaxCompute优化是一个多样而又重要的过程,优化过程需要能够深入理解ODPS的工作原理和内部机制,本文总结了以下几个日常优化案例,最终优化手段可能非常简单,但其中的分析过程较为重要,希望对大家有所启发。
37 0
|
1月前
|
分布式计算 数据可视化 Hadoop
大数据实战——基于Hadoop的Mapreduce编程实践案例的设计与实现
大数据实战——基于Hadoop的Mapreduce编程实践案例的设计与实现
240 0

热门文章

最新文章