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查询验证数据加载完整性与正确性。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu打开epub格式的文件

Koodo Reader 是一个开源免费的电子书阅读器,支持多达15种主流电子书格式, 内置笔记、高亮、翻译功能,助力高效书籍阅读和学习。 官网地址 拖拽到此处即可添加图书 支持滚轮和点击翻页 菜单在这里 可以记笔记 查看笔记

大数据开发之Hive(压缩和存储)

第 9 章:压缩和存储 Hive不会强制要求将数据转换成特定的格式才能使用。利用Hadoop的InputFormat API可以从不同数据源读取数据,使用OutputFormat API可以将数据写成不同的格式输出。 对数据进行压缩虽然会增加额外的CPU开销,但是会节约客观…

CTFhub-phpinfo

CTFhub-Web-信息泄露-“phpinfo” 题目信息 解题过程 ctrlF搜索关键字…

【Linux驱动】设备树中指定中断 | 驱动中获得中断 | 按键中断实验

🐱作者:一只大喵咪1201 🐱专栏:《Linux驱动》 🔥格言:你只管努力,剩下的交给时间! 目录 🏀在设备树中指定中断🏀代码中获得中断🏀按键中断⚽驱动…

Python教程79:关于海龟画图,Turtle模块需要学习的知识点

1.海龟画图的基本步骤:A-B-C-D-E-F A.导入turtle模块:首先需要导入Python中的turtle模块,该模块提供了海龟绘图所需的基本函数和属性。 import turtle as tB.设置画布大小 使用turtle.screensize()函数。该函数可以设置画布的宽度高度背景…

中小企业如何做好信息化规划?

中小企业需不需要做信息化规划?什么时候做信息化规划比较好? 企业的信息化规划,一定是越早越好,越快越好。 因为信息化是一个过程,不是一个结果,它不是一天完成的事情,而是贯穿着企业经营管理…

FPGA引脚 Bank认知--FPGA 选型的一些常识

关键字 HP I/O Banks, High performance The HP I/O banks are deisgned to meet the performance requirements of high-speed memory and other chip-to-chip interface with voltages up to 1.8V. HR I/O Banks, High Range The HR I/O banks are designed to support a wid…

用python提取PDF中各类文本内容的方法

从PDF文档中提取信息,是很多类似RAG这样的应用第一步要处理的事情,这里需要做好三件事: 提取出来的文本要保持信息完整性,也就是准确性提出的结果需要有附加信息,也就是要保存元数据提取过程要完成自动化,…

FPGA四选一的多路选择器(用三元运算符?:解决)

一. 三元运算符? :用法 ?:符号通常用于条件运算符,表示条件判断。它类似于C语言中的三元运算符,用于根据条件选择不同的操作或值。 例如,在Verilog中,条件运算符?:可以用于if-else语句的简写形式。它的一般语法格式如下&#x…

市场复盘总结 20240113

仅用于记录当天的市场情况,用于统计交易策略的适用情况,以便程序回测 短线核心:不参与任何级别的调整,采用龙空龙模式 昨日主题投资 连板进级率 100% 二进三: 进级率低 14% 最常用的二种方法: 方法一&a…

IIC学习之SHT30温湿度传感器(基于STM32)

简介 附上SHT30资料和逻辑分析仪源文件,点击下载 关于IIC的介绍网上已经非常详尽,这里只说重点: 双线(SDA,SCL),半双工采用主从结构,支持一主多从,通过地址寻址&#…

Hologres + Flink 流式湖仓建设

Hologres Flink 流式湖仓建设 1 Flink Hologres2 实时维表 Lookup 1 Flink Hologres holo在实时数仓领域非常受欢迎,一般搭配flinkhologres来做实时数仓,中间分层用holo,上下游一般依赖于holo的binlog来下发数据 2 实时维表 Lookup Holo…

生活的再思考,写在开篇

近几年的就业行情很特别,特别是对中年人,早先网络上主流的声音是动不动总包百万,手握几个 Offer ,纠结应该去哪里。现在的主流声音变成了,被毕业优化掉后几个月都没找到合适的工作,焦虑迷茫无所适从&#x…

药物“出气”可知|ZL-005大小鼠雾化给药仪

雾化吸入给药是一种通过装置使药物进入肺部局部或全身发挥作用的给药方式。相较于口服药剂,雾化吸入给药可避免首过效应和药剂破坏,提高药物生物利用度。 而ZL-005大小鼠雾化给药仪,则是新一代小动物雾化装置的理想选择,可完成动…

你升级GPT-4了吗?,如何申请GPT-4 API?最全攻略

ChatGPT4就是ChatGPTPlus,调用接口就分ChatGPT3.5与ChatGPT4.0,如果你想使用ChatGPT4的接口就先充值ChatGPTPlus,在区ChatGPT绑定API即可调用4.0的API 在国内很多小伙伴还不知道怎么升级ChatGPT-4,因为自己只有国内的卡&#xff…

春晚为什么失去了观众?

​春晚失去了观众,这是近年来不可忽视的现象。春晚作为中国的一项传统文化活动,曾经吸引了亿万观众的眼球,但如今却面临着越来越多的挑战和质疑。那么,春晚为什么失去了观众呢? 首先,随着时代的变迁&#…

【C语言】指针进阶

指针的主题,在初阶的《指针》章节已经接触过了,我们知道了指针的概念: 指针就是个变量,用来存放地址,地址唯一标识一块内存空间。指针的大小是固定的4/8个字节(32位平台/64位平台)。指针是有类…

如何使用Imagewheel搭建一个简单的的私人图床无公网ip也能访问

文章目录 1.前言2. Imagewheel网站搭建2.1. Imagewheel下载和安装2.2. Imagewheel网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar临时数据隧道3.2.Cpolar稳定隧道(云端设置)3.3.Cpolar稳定隧道(本地设置) 4.公网访问测…

每日一题——LeetCode1200.最小绝对差

方法一 个人方法 排序一次遍历: 最小差值一定是出现在大小相邻的两个元素之间,所以将数组从小到大排序 循环求两元素之间的差值,先假设当前差值为最小差值,先往res数组里面push数据,当碰到更小差值的时候&#xff0c…

Vue-Router 路径匹配与重定向

一、效果与描述 通过设置路由匹配同时设置重定向,让输错的网址重定向到指定页面,例如在网页输入网页地址把路径进行任意修改,重定向到登录页面。 二、Vue-Router代码 import { createRouter, createWebHashHistory } from vue-routerimport …