Hive分区表实战 - 多分区字段

文章目录

  • 一、实战概述
  • 二、实战步骤
    • (一)创建学校数据库
    • (二)创建省市分区的大学表
    • (三)在本地创建数据文件
      • 1、创建四川成都学校数据文件
      • 2、创建四川泸州学校数据文件
      • 3、创建江苏南京学校数据文件
      • 4、创建江苏苏州学校数据文件
    • (四)按省市分区加载学校数据
      • 1、加载四川成都学校数据文件到四川成都分区
      • 2、加载四川泸州学校数据文件到四川泸州分区
      • 3、加载江苏南京学校数据文件到江苏南京分区
      • 4、加载江苏苏州学校数据文件到江苏苏州分区
    • (五)查看大学分区表记录
      • 1、查看全部记录
      • 2、查看江苏分区记录
    • (六)查看大学分区表对应的目录及文件
    • (七)在MySQL里查看Hive元数据(分区信息)
      • 1、登录MySQL Hive Metastore数据库
      • 2、 查看university表分区元数据信息
  • 三、实战总结
  • 四、课后练习

一、实战概述

  • 本实战教程通过一系列Hive SQL操作,演示了如何在大数据环境下创建具有省市分区的大学表,并从本地文件系统加载不同地区的学校数据到对应分区。首先,创建名为school的数据库并切换至该数据库;接着,在数据库中定义一个名为university的分区表,其结构包括ID和名称两列,并按照省份和城市进行物理分区。随后,在本地创建多个包含各省市区学校数据的文本文件。

  • 在完成数据文件准备后,依次将各地区学校数据文件按省市分区加载到university表中,利用LOAD DATA LOCAL INPATH语句实现数据高效地从本地导入到Hadoop分布式文件系统(HDFS)中的相应分区目录下。

  • 最后,通过执行SQL查询语句验证数据加载的正确性,查看全表记录以及特定省份的所有记录,并通过HDFS命令行工具检查分区表对应的目录及文件。此外,还展示了如何在MySQL中查看Hive元数据信息,进一步理解Hive中分区表的实际存储结构和组织方式。整个实战过程旨在帮助用户掌握基于Hive的大规模数据管理和分区表应用技巧。

二、实战步骤

(一)创建学校数据库

  • 执行语句:create database school;
    在这里插入图片描述
  • 执行语句:use school;,切换到school数据库
    在这里插入图片描述

(二)创建省市分区的大学表

  • 执行语句:CREATE TABLE university (id INT, name STRING) PARTITIONED BY (province STRING, city STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ';
    在这里插入图片描述
  • 该SQL语句用于在支持分区功能的数据库系统(如Hive、Impala等基于Hadoop的数据仓库)中创建一个名为university的表,并且定义了表的结构以及分区方案。不过,值得注意的是,标准的SQL语法并不直接支持PARTITIONED BY这样的关键字,这是大数据处理框架为了解决大规模数据存储和查询优化而扩展的语法。
CREATE TABLE university (id INT,name STRING
)
  • 这部分定义了一个新表university,它有两个列:
    • id列是整数类型(INT)。
    • name列是字符串类型(STRING)。
PARTITIONED BY (province STRING, city STRING)
  • 这部分指定了表的分区键。这意味着表中的数据会按照provincecity这两个字段的值进行物理划分。每个分区对应一组特定省份和城市的记录集合。这样做可以提高针对特定省份或城市数据的查询性能,因为只需要扫描相关的数据分区即可,而不是整个表。
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ' '
  • 这部分定义了表数据的格式:

    • ROW FORMAT DELIMITED表示每一行数据都是以某种分隔符结束的。
    • FIELDS TERMINATED BY ' '说明各个字段之间用空格字符作为分隔符。
  • 总结起来,这条SQL语句是在创建一个具有ID和名称两列的university表,并按照省份和城市进行了分区,且表中数据是以空格分隔的文本格式存储。这非常适合于处理大型、半结构化的日志文件或者需要按地理位置快速检索的大数据场景。

(三)在本地创建数据文件

1、创建四川成都学校数据文件

  • 在master虚拟机上创建sc_cd_schools.txt文件
    在这里插入图片描述

2、创建四川泸州学校数据文件

  • 在master虚拟机上创建sc_lz_schools.txt文件
    在这里插入图片描述

3、创建江苏南京学校数据文件

  • 在master虚拟机上创建js_nj_schools.txt文件
    在这里插入图片描述

4、创建江苏苏州学校数据文件

  • 在master虚拟机上创建js_sz_schools.txt文件
    在这里插入图片描述

(四)按省市分区加载学校数据

1、加载四川成都学校数据文件到四川成都分区

  • 加载sc_cd_schools.txt到分区(province='sc', city='cd'

  • 执行语句:LOAD DATA LOCAL INPATH '/root/sc_cd_schools.txt' OVERWRITE INTO TABLE university PARTITION (province='sc', city='cd');
    在这里插入图片描述

  • 这段SQL语句是在大数据处理框架如Hive或Impala中使用的,用于从本地文件系统加载数据到已存在的分区表university中,并且会覆盖目标分区已有的数据。

    • LOAD DATA LOCAL INPATH '/root/sc_cd_schools.txt': 这部分指定要加载的数据文件路径。其中LOCAL关键字表示数据文件位于客户端(即运行该命令的机器)本地文件系统中的 /root/sc_cd_schools.txt 路径下。

    • OVERWRITE INTO TABLE university: OVERWRITE 表示如果目标表或者目标分区已有数据,则先删除原有数据再进行加载;INTO TABLE university 指定了将数据加载到名为 university 的表中。

    • PARTITION (province='sc', city='cd'): 由于 university 表是分区表,这里指定了要加载数据到的具体分区,即 province 字段为 'sc' (四川省的缩写)和 city 字段为 'cd' (成都市的缩写)。这意味着数据将会被加载到代表四川省成都市的分区里。

  • 总结:该SQL语句的作用是从本地文件系统中读取 /root/sc_cd_schools.txt 文件中的数据,然后将其作为四川省成都市分区的数据,以覆盖的方式加载到名为 university 的分区表中。

2、加载四川泸州学校数据文件到四川泸州分区

  • 加载sc_lz_schools.txt到分区(province='sc', city='lz'

  • 执行语句:LOAD DATA LOCAL INPATH '/root/sc_lz_schools.txt' OVERWRITE INTO TABLE university PARTITION (province='sc', city='lz');
    在这里插入图片描述

3、加载江苏南京学校数据文件到江苏南京分区

  • 加载js_nj_schools.txt到分区(province='js', city='nj'
  • 执行语句:LOAD DATA LOCAL INPATH '/root/js_nj_schools.txt' OVERWRITE INTO TABLE university PARTITION (province='js', city='nj');
    在这里插入图片描述

4、加载江苏苏州学校数据文件到江苏苏州分区

  • 加载js_sz_schools.txt到分区(province='js', city='sz'
  • 执行语句:LOAD DATA LOCAL INPATH '/root/js_sz_schools.txt' OVERWRITE INTO TABLE university PARTITION (province='js', city='sz');
    在这里插入图片描述

(五)查看大学分区表记录

1、查看全部记录

  • 执行语句:SELECT * FROM university;
    在这里插入图片描述

2、查看江苏分区记录

  • 执行语句:SELECT * FROM university WHERE province = 'js';
    在这里插入图片描述

(六)查看大学分区表对应的目录及文件

  • 执行命令:hdfs dfs -ls -R /user/hive/warehouse/school.db
    在这里插入图片描述

(七)在MySQL里查看Hive元数据(分区信息)

1、登录MySQL Hive Metastore数据库

  • 执行命令:mysql -uroot -p903213,登录MySQL,然后执行use hive;,打开hive元数据库
    在这里插入图片描述

2、 查看university表分区元数据信息

  • 执行语句:SELECT * FROM COLUMNS_V2;,university分区表的CD_ID值是33
    在这里插入图片描述
  • 执行语句:SELECT SD_ID, CD_ID, LOCATION FROM SDS WHERE CD_ID = 33;
    在这里插入图片描述

三、实战总结

  • 本实战演练通过创建分区表university,并按省市划分加载本地学校数据文件至Hive,展示了大数据环境下高效的数据管理与查询方法。利用分区技术优化存储与查询性能,并通过SQL验证数据加载正确性及查看分区信息,实现了对大规模教育数据的组织和分析。

四、课后练习

  • 根据实战教程中的步骤,自行创建一个以国家和城市为分区键的公司信息表(如company),包含字段:id(整数类型)、name(字符串类型)和address(字符串类型)。然后,在本地创建不同国家城市公司的数据文件,并将这些数据按各自对应的国家和城市分区加载到Hive表中。最后,通过SQL查询验证数据加载完整性与正确性。

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

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

相关文章

字节8年经验之谈!一文从0到1带你入门接口测试【建议收藏】

扫盲内容: 1.为什么要做接口测试? 2.怎样做接口测试? 3.接口测测试点是什么? 4.接口测试都要掌握哪些知识? 5.其他相关知识? 一.为什么要做接口测试? ①.越底层发现bug,它的修…

5G之味,在烟火长沙

今年夏天,有一部电影叫做《长沙夜生活》。影片讲述了长沙大排档中的一些故事。网红大排档的老板娘、厨师、顾客,他们的邂逅、热爱、留下、离开、和解、团圆,都发生在一段夜色里,发生在充满烟火气的长沙城。 有没有想过这样一个问题…

线性表入门

王有志,一个分享硬核Java技术的互金摸鱼侠加入Java人的提桶跑路群:共同富裕的Java人 从今天开始就进入到数据结构的部分了,整体分为3个部分:线性表,树和图,从认识每种数据结构到它们的高级应用。今天我们先…

C# Linq+ValueTuple(元祖),成为Linq高手!

文章目录 前言简单使用:能被2整除ValueTuple使用:两数相加等于4不使用元祖使用元祖排序 基于类的LinqGroupByJoinDistinct去重普通去重选择去重 集合去重ExceptIntersectUnion 总结 前言 Linq是C# 最强语法之一,和委托,get set并列(在我的心中)。我很早就听说了Lin…

基于JavaWeb+BS架构+SpringBoot+Vue智能停车计费系统的设计和实现

基于JavaWebBS架构SpringBootVue智能停车计费系统的设计和实现 文末获取源码Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 文末获取源码 Lun文目录 1 绪 论 1 1.1 研究背景 1 1.2 研究意义 1 1.3 系统主要功能 1 1.4 拟解决…

Blazor快速开发框架Known-V2.0.0

Known2.0 Known是基于Blazor的企业级快速开发框架,低代码,跨平台,开箱即用,一处代码,多处运行。 官网:http://known.pumantech.comGitee: https://gitee.com/known/KnownGithub:ht…

Ubuntu22.04开机左上角下划线闪烁不开机

按下CtrlAltF2,打开TTY系统,然后通过用户名和密码登录,随后使用 sudo apt --fix-broken install 根据提示排除错误信息,然后使用apt安装lightdm安装就行。 tips:当使用EasyConnect的时候,你可能参考了下面这篇文章知…

130基于MATLAB并结合IBD算法的盲迭代反卷积法进行图像复原

基于MATLAB并结合IBD算法的盲迭代反卷积法进行图像复原 ,输出复原前后图像,PSF频谱结果。程序已调通,可直接运行。 130 matlab盲迭代反卷积IBD (xiaohongshu.com)

【Kafka-3.x-教程】-【三】Kafka-Broker、Kafka-Kraft

【Kafka-3.x-教程】专栏: 【Kafka-3.x-教程】-【一】Kafka 概述、Kafka 快速入门 【Kafka-3.x-教程】-【二】Kafka-生产者-Producer 【Kafka-3.x-教程】-【三】Kafka-Broker、Kafka-Kraft 【Kafka-3.x-教程】-【四】Kafka-消费者-Consumer 【Kafka-3.x-教程】-【五…

【Redis】Redis持久化方式

Redis 中有两种持久化方式,分别为 RDB 和 AOF。 RDB RDB 全称 Redis Database Backup file,也叫做 Redis 数据快照。简单来说就是把 Redis 中的数据记录到磁盘中。当 Redis 实例故障重启后,从磁盘读取快照文件,恢复数据。 RDB有…

ESP32S3+HX8347+RGB运行LVGL例程

之前用3线SPI驱动的HX8347屏其实是一个RGB屏,SPI只是用来给RGB屏幕的做配置的,当然也可以用来驱动屏幕,但是3线SPI驱动能力终究有限。本文谈一下用RGB方式来驱动。 RGB接线比较多,为此做了个转接板: 一、源码 1、scre…

超维空间M1无人机使用说明书——53、ROS无人机二维码识别与降落——V2升级版本

引言:使用二维码引导无人机实现精准降落,首先需要实现对二维码的识别和定位,可以参考博客的二维码识别和定位内容。本小节主要是通过获取拿到的二维码位置,控制无人机全向的移动和降落,本小节再V1版本的基础上增加了动…

实现稳定的联合显著性检测和联合目标分割

1 Title Toward Stable Co-Saliency Detection and Object Co-Segmentation(Bo Li; Lv Tang; Senyun Kuang; Mofei Song; Shouhong Ding)【IEEE Transactions on Image Processing 2022】 2 Conclusion This paper present a novel model for simultaneous stable co-saliency…

基础_函数_流程函数

流程函数也是很常用的一类函数,可以在SQL语句中实现条件筛选,从而提高语句效率.

【HarmonyOS4.0】第七篇-ArkUI系统组件(二)

鸿蒙开发系统组件详细剖析 五、进度条组件 进度条也是UI开发最常用的组件之一,ArkUI开发框架提供了两种类型的进度条: Progress 和LoadingProgress ,前者可以精准指定进度,后者表示正在加载的状态,我们接下来对它们分…

Spring MVC 参数接收

参数接收 Springmvc中,接收页面提交的数据是通过方法形参来接收: 处理器适配器调用springmvc使用反射将前端提交的参数传递给controller方法的形参 springmvc接收的参数都是String类型,所以spirngmvc提供了很多converter(转换器…

LightGBM原理和调参

背景知识 LightGBM(Light Gradient Boosting Machine)是一个实现GBDT算法的框架,具有支持高效率的并行训练、更快的训练速度、更低的内存消耗、更好的准确率、支持分布式可以处理海量数据等优点。 普通的GBDT算法不支持用mini-batch的方式训练,在每一次…

Google Pixel 与 iPhone手机:哪个更好?

iPhone稳定可靠,Pixel性价比高且创新。两者各有千秋,满足不同需求 谷歌的 Pixel 手机是 Android 最接近 iPhone 的手机,也是真正原生的Android手机。在iPhone 15 Pro Max 与华为 Mate 60 Pro的比较中不难看出,iPhone依然有着极强…

杨中科 .NETCORE 异步编程

一、 为什么需要异步编程 异步点餐的优点:能同时服务多个客人 异步点餐一定会提升单个客户点餐速度吗? 答案理所当然:不能 图片美化服务例子服务器能够同时服务的请求数量有限 void BeautifyPic (File photo, Response response) {byte[] …

Nginx配置反向代理实例二

Mac 安装Nginx教程 Nginx配置反向代理实例一 提醒一下:下面实例讲解是在Mac系统演示的; 反向代理实例二实现的效果 使用nginx 反向代理,根据访问的地址跳转到不同端口的服务中 nginx 监听端口为81; 访问地址1:http:/…