Hive(4):场景案例:Apache Hive初体验

news2024/11/18 10:33:36

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

1.1 背景

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

1.2 过程

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

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

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

执行完insert会发现执行时间很长,效率很低。

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,里面内容如下

vim 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

hadoop fs -put user.txt /

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

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

 

2.3 验证

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

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

hadoop fs -mv /user.txt /user/hive/warehouse/handsome.db/t_user

 

 

再次执行查询操作,显示如下,都是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/handsome.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;

 发现又是通过MapReduce程序执行的数据查询功能。

 执行时间很长。

3.4 结论

  • Hive底层的确是通过MapReduce执行引擎来处理数据的
  • 执行完一个MapReduce程序需要的时间不短
  • 如果是小数据集,使用hive进行分析将得不偿失,延迟很高
  • 如果是大数据集,使用hive进行分析,底层MapReduce分布式计算,很爽

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/192080.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

激光投影仪哪款好?坚果N1 Pro和海信Vidda C1和当贝X3测评

当贝x3、坚果N1Pro和海信Vidda C1都是近期比较热门的激光投影仪,作为消费者来说选择哪一款比较好呢?看看实测对比和参数对比就知道它们的区别了。(一)三款激光投影仪的实测对比1)外观对比:坚果N1 Pro枪灰加深灰的色彩组合,自带了一个云台,能够支持任意角度调整,但比普通的投影…

【6s965-fall2022】量化 Quantization Ⅰ

模型的大小不仅和参数量的多少有关,而且也和位宽有关。 ModelSize#ParameterBitWidth.ModelSize \#Parameter BitWidth. ModelSize#ParameterBitWidth. 低位宽的运算操作容易实现、运算速度快、功耗低。 什么是量化? 从广义上讲,量化是将连…

龙蜥开发者说:6 年前打开的开源“潘多拉盲盒”,如今都解了哪些未知数 | 第 15 期

「龙蜥开发者说」第 15 期来了!开发者与开源社区相辅相成,相互成就,这些个人在龙蜥社区的使用心得、实践总结和技术成长经历都是宝贵的,我们希望在这里让更多人看见技术的力量。本期故事,我们邀请了龙蜥社区开发者陈成…

PTA L1-020 帅到没朋友(详解)

前言:本期是关于帅到没朋友的详解,内容包括四大模块:题目,代码实现,大致思路,代码解读 今天你c了吗? 题目: 当芸芸众生忙着在朋友圈中发照片的时候,总有一些人因为太帅…

如何将视频制作成高清gif?试试这一招快速完成

随着现在短视频平台的兴起,越来越多的小伙伴在刷到好玩有趣的视频时都会下载下来,进行分享。但是,视频的体积往往比较大,传输起来非常的不方便。这时候就可以将视频转换成gif动图来使用。接下来,小编给大家分享几个视频…

CobaltStrike之宏钓鱼及shellcode 实验详细

文章目录预备知识实验目的实验地址实验环境实验步骤一启动cs服务器客户端连入服务器生成office宏病毒利用宏病毒上线CS生成宏文件利用成功实验步骤二实验步骤三预备知识 CobaltStrike是一款渗透测试神器,常被业界人称为CS神器。CobaltStrike已经不再使用MSF而是作为…

css图片铺满浏览器窗口且不变形

今天项目中提到一个需求,需要把背景图片铺满浏览器全屏,且图片不变形。 也就是说显示的宽高是不确定的,我第一反应就是background-size: 100% 100%;但是这样做有一个弊端。 下面结合代码图具体讨论一下: 首先,设计一个…

请求上下文头信息:User-Agent ,Referer,Form,Server,Allow,Accept-Range

User-Agent User-Agent 的组成 由1个product和后面零个或多个product信息组成 product包含两个部分,token和token指向的软件的版本号 举例中 Mozilla 5.0 表示浏览器兼容Mozilla 5.0版本的,后面的window 信息,就属于conment部分 RWS由一个…

36. 实战:基于上一节的全面升级——实现某音批量下载功能

目录 前言 目的 思路 代码实现 1. 先将下载单个视频的功能封装成函数 2. 获取下载列表 3. 创建线程池调用下载函数 完整源码 运行效果 总结 前言 上一节我们实现了某短视频平台的去水印下载功能,本节我们实现批量抓取:给定某一个用户主页&…

Cache的PLRU替换策略

LRU(Least Recently Used)替换策略是cache的经典替换策略之一,然而,LRU替换策略的硬件开销较大。因此,一些现代处理器,例如Intel 486和PowerPC,它们使用的cache替换策略是PLRU(pseudo-LRU)。 PLRU是LRU的一种近似方法,本文介绍PLRU中的tree-PLRU(tree-based pseudo-…

VSCode 配置 C/C++ 开发环境( MSVC )

0.绿色版本下载地址:https://www.aliyundrive.com/s/DMK13owZSrC绿色版本采用 VSCode User 1.7.4.2 X64 版本。绿色便携版本采用的生成工具来自 Visual C 2010 版本提供的 32 位工具链。Win 7 Win10 Win 11 可以正常运行。使用方法,下载文件后&#xff0…

微信小程序021理发店美容预约系统java nodejs php

美容预约小程序微信端要求在系统的手机上可以运行,主要实现了管理端;首页、个人中心、用户管理、服务项目管理、美容师管理、预约管理、类型管理、系统管理,微信端;首页、预约、我的等主要功能模块的操作和管理。 小程序前端框架&…

ML LightGBM详细原理讲解+面试必考知识点

😄 三大竞赛杀器:XGBoost、LightGBM、CatBoost。之前我已更新完XGBoost的讲解,这次来讲讲LightGBM。我也是看网上看了多篇文章做总结的(我是遇到不会问题的就去搜,实在记不起来看过哪些,如果有侵权问题,可私…

Spark 读取、写入时序数据库TDengine以及TDengine概述

一、TDengine是什么TDengine 是一款高性能、分布式、支持 SQL 的时序数据库,其核心代码,包括集群功能全部开源(开源协议,AGPL v3.0)。TDengine 能被广泛运用于物联网、工业互联网、车联网、IT 运维、金融等领域。除核心…

Postman form-data、x-www-form-urlencoded的区别

我们在平时的postman请求调试,以及web的http请求开发时,常常能看到以下几种传参的形式 form-data、x-www-form-urlencoded、raw、binary,那么这些请求方式的区别是什么呢? 1、form-data: 就是http请求中的multipart/form-data,它…

一文读懂!2023量子计算行业发展方向

(图片来源:网络)量子计算是一个引人入胜的主题,放眼全球,很多文章报道了商业量子计算的项目和应用,关于量子计算行业在2023年的可能发展方向,本文从大量文章中筛选罗列了一些主要发展方向。McKi…

postman生成测试报告

一、newman插件生成测试报告安装nodejs官网下载适合自己设备的包,下载后直接傻瓜式安装;安装完成验证:打开终端,输入 node -v,即可查看安装版本;安装newman安装好nodejs后,通过npm来安装newman&…

VueJS 基础之组件

文章目录参考描述组件化开发组成templatescriptstylemain.js使用嵌套关系组件的使用LeftRight举个栗子全局组件及私有组件私有组件全局组件举个栗子main.jsApp.vue参考 项目描述VueJS官方文档搜索引擎Bing哔哩哔哩黑马程序员 描述 项目描述Edge109.0.1518.70 (正式版本) (64 …

计算机网路6-详述网路层:数据交换、路由算法和协议、网络协议

一、网络层基本概念 1、主要任务 把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务 2、网络层传输单位--数据报 数据报与分组之间关系: 分组是数据报通过切割划分出来的一个片段,多个分组组成数据报 3、网络层的几大功能 路…

LeetCode-122. 买卖股票的最佳时机 II

目录暴力递归动态规划贪心题目来源 122. 买卖股票的最佳时机 II 暴力递归 根据题意:由于不限制交易次数,在每一天,就可以根据当前是否持有股票选择相应的操作。「暴力搜索」在树形问题里也叫「回溯搜索」、「回溯法」。 首先画出树形图&…