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

news2024/10/6 10:31:04

文章目录

  • 一、实战概述
  • 二、实战步骤
    • (一)创建学校数据库
    • (二)创建省市分区的大学表
    • (三)在本地创建数据文件
      • 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.coloradmin.cn/o/1386172.html

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

相关文章

在线项目实习|2024寒假项目实战火热报名中!

一、在线实习项目分类 二、在线实习项目流程 三、在线实习项目优惠及项目特色 1、师傅带练教学模式,手把手教你掌握 采用“师带徒”的教学模式,课程以“项目前置知识学习 师傅带练 项目实战”贯穿,强调动手实操,内容以代码落地为…

反向代理的本质是什么?

反向代理是一种网络架构模式,通常用于提供静态内容、处理安全、负载均衡和缓存等任务。在这种架构中,客户端发送的请求首先到达反向代理服务器,然后由反向代理服务器将请求转发给后端的实际服务器。反向代理服务器可以处理和修改请求和响应&a…

命名空间 “Eigen“ 没有成员 “SelfAdjointEigenSolver“

代码中用到SelfAdjointEigenSolver 结果报错&#xff1a;报错实在windows10条件下发生的。 查找资料&#xff0c;最后还是要定位到官方文档。 计算自伴随矩阵的特征值和特征向量。 这是在特征值模块中定义的。 添加如下引用即可解决&#xff0c;请点赞关注。 #include <…

2023 年公链发展报告

作者&#xff1a;stellafootprint.network 2023 年&#xff0c;公链领域展现出强大的韧性和持续的创新力。这一年&#xff0c;比特币的强势回归、以太坊的稳步增长以及 Solana 的惊人崛起&#xff0c;共同绘制出一幅市场复苏的生动画面。在这一背景下&#xff0c;公链加密货币…

华媒舍:高效率的新闻资讯新闻媒体宣发套餐内容推广计划方案

怎样让自己的新闻资讯可以被大众孰知&#xff0c;变成了每一个新闻媒体宣发者一同存在的困难。下面我们就给大家介绍一套高效率的新闻资讯新闻媒体宣发套餐内容推广计划方案&#xff0c;致力于帮助新闻媒体宣发者提升宣发高效率&#xff0c;提高新闻资讯的传播性。 1.新闻媒体宣…

2023年全国电子签章政策汇总,契约锁提供具有法律效力的电子签章

2023年&#xff0c;国务院及各地政府办公厅、市监局、住建委等机关部门&#xff0c;持续推动电子签章、电子合同等功能在“政府采购、工程项目审批、企业开办等”领域深化应用&#xff0c;加快实现电子签章互信互认&#xff0c;不断简化办事流程&#xff0c;让越来越多高频常办…

【mars3d】 graphic.bindPopup(inthtml).openPopup()无需单击小车,即可在地图上自动激活弹窗的效果。

实现效果&#xff1a;new mars3d.graphic.FixedRoute({无需单击小车&#xff0c;即可在地图上实现默认打开弹窗的激活效果。↓↓↓↓↓↓↓↓ 相关链接说明&#xff1a; 1.popup的示例完全开源&#xff0c;可参考&#xff1a;功能示例(Vue版) | Mars3D三维可视化平台 | 火星科…

QT 原生布局和QML的区别

一、QML 与 Qt Quick的区别 1.1 从概念上区分 为了更精确地对两者进行说明&#xff0c;先看助手对 QML 的描述&#xff1a; QML is a user interface specification and programming language. QML 是一种用户界面规范和标记语言&#xff0c;允许开发人员和设计师创建高性能、流…

央视推荐的护眼灯是哪款?教育部认可护眼灯品牌

许多家长一般都会给孩子买上许多学习用品&#xff0c;比如现在一些学习桌椅、读写笔灯等等&#xff0c;配有蛮多的学习用具&#xff0c;但对孩子学习时用的护眼台灯很忽略&#xff0c;没有给孩子选好真正合格好用的护眼台灯&#xff0c;就容易让孩子的视觉形成偏差&#xff0c;…

外汇天眼:分析K线背后的力量,别让自己只停留在画线的阶段!

不确定性是市场的本质&#xff0c;也是它魅力所在。 大部分学习技术分析的新手以及亏货老手所能理解的技术分析就是在已经走完的图表上画线&#xff0c;或者研究K线形态&#xff0c;组合形态&#xff0c;等等...... 然后根据画的线和形态来预测未来走势&#xff0c;并依据这个…

深入理解 go RWMutex

在上一篇文章《深入理解 go Mutex》中&#xff0c; 我们已经对 go Mutex 的实现原理有了一个大致的了解&#xff0c;也知道了 Mutex 可以实现并发读写的安全。 今天&#xff0c;我们再来看看另外一种锁&#xff0c;RWMutex&#xff0c;有时候&#xff0c;其实我们读数据的频率要…

深度探讨 Golang 中并发发送 HTTP 请求的最佳技术

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 在 Golang 领域&#xff0c;并发发送 HTTP 请求…

浊度水质分析仪的功能特性,及其在环境监测中的重要作用

在环境保护和水资源管理领域&#xff0c;对水质的精准监测是确保水体健康、保障公众用水安全的重要环节。其中&#xff0c;浊度作为衡量水体中悬浮物含量的关键参数&#xff0c;其精确测量对于环境评价和治理至关重要。浊度水质分析仪正是这样一款专门针对浊度进行实时在线监测…

【计算机组成-算术逻辑单元】

课程链接&#xff1a;北京大学陆俊林老师的计算机组成原理课 1. 算术运算和逻辑运算 算数运算 逻辑运算 算数逻辑运算的需求 算数运算&#xff1a;两个32-bit数的加减法&#xff0c;结果为一个32-bit数&#xff1b;检查加减法的结果是否溢出逻辑运算&#xff1a;两个32-bit数…

2024谷歌SEO自学基础入门

2024年可能会迎来大航海时代&#xff0c;国内各企业也加速了出海的步伐&#xff01;&#xff01; &#xff08;看总额&#xff0c;今年中国跨境电商&#xff0c;前三季度进出口1.7万亿元人民币&#xff0c;创造了14.4%的增长。 看体量&#xff0c;过去五年&#xff0c;中国跨…

【ESP32最全学习笔记(基础篇)——1.ESP32简介】

ESP32 新手&#xff1f;从这里开始&#xff01; 关于本教程&#xff1a; ESP32 基础篇 1.ESP32简介 ☑ 2.ESP32 Arduino 集成开发环境 3.ESP32 Arduino IDE 2.0 4.VS 代码…

Arduino快速上手esp8266方案开发

认识ESP8266 ESP8266 是 Espressif Systems 生产的 Wi-Fi 片上系统 (SoC)。它非常适合物联网和家庭自动化项目&#xff0c;目前有非常高的市场普及率&#xff0c;还有更加高端的同时支持wifi和蓝牙的双核心芯片ESP32&#xff0c;可以在乐鑫官网查看完整的芯片列表。 ESP8266芯…

Microsoft Remote Desktop for Mac 中文正式版下载 微软远程连接软件

Microsoft Remote Desktop 是一款专为 Mac 用户设计的远程桌面工具&#xff0c;它可以帮助用户通过网络连接到其他计算机&#xff0c;实现远程控制和操作。 软件下载&#xff1a;Microsoft Remote Desktop for Mac 中文正式版下载 该工具支持多种远程连接协议&#xff0c;包括 …

imgaug库指南(23):从入门到精通的【图像增强】之旅

引言 在深度学习和计算机视觉的世界里&#xff0c;数据是模型训练的基石&#xff0c;其质量与数量直接影响着模型的性能。然而&#xff0c;获取大量高质量的标注数据往往需要耗费大量的时间和资源。正因如此&#xff0c;数据增强技术应运而生&#xff0c;成为了解决这一问题的…