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.hqwc.cn/news/341696.html

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

相关文章

【RT-DETR有效改进】带你分析如何确定改进的基础模型,解决模型无法收敛精度很差的问题(ResNet官方一比一复现)

一、本文介绍 Hello,各位读者,距离第一天发RT-DETR的博客已经过去了接近两个月,这段时间里我深入的研究了一下RT-DETR在ultralytics仓库的使用,旨在为大家解决为什么用v8的仓库训练的时候模型不收敛,精度差的离谱的问…

高效降压控制器FP7132XR:为高亮度LED提供稳定可靠的电源

目录 一. FP7132概述 二. 驱动电路:FP7132 三. FP7132应用 高亮度LED作为新一代照明技术的代表,已经广泛应用于各种领域。然而,高亮度LED的工作电压较低,需要一个高效降压控制器来为其提供稳定可靠的电源。在众多降压控制器…

maya , motionbuilder 骨骼动画相关操作与脚本

文章目录 maya 解除/增加父子关系maya 修改骨骼局部坐标系mb同时打开两个动画文件显示骨骼局部坐标系删除不需要的骨骼重命名骨骼 maya 解除/增加父子关系 解触: 右键->操作->解除父子关系 增加:鼠标中键拖拽 maya 修改骨骼局部坐标系 注意一般就是改旋转&…

Alphalens因子分析(4) - Information Coefficient方法

在前面的笔记中,无论是回报分析,还是因子Alpha,它们都受到交易成本的影响。信息分析 (Information Analysis)则是一种不受这种影响的评估方法,主要研究方法就是信息系数(Information Coefficient)。 信息系数的范围为-1到1&#x…

CISP-DSG证书含金量分析

CISP-DSG证书的含金量主要体现在以下几个方面👇 1️⃣专业知识 CISP-DSG认证要求持有者具备深入的数据an全治理知识,包括数据分类、数据隐私、合规性、风险管理等。📒这些知识对于处理和保护组织的敏感数据至关重要,因此具有高含金…

JavaScript系列——Promise

文章目录 概要Promise三种状态状态改变Promise链式调用Promise处理并发promise.all()promise.allSettled()Promise.any()promise.race() 小结 概要 Promise中文翻译过来就是承诺、预示、有可能的意思。 在JavaScript里面,Promise 是一个对象…

docker部署mongo过程

1、拉取MongoDB镜像,这里拉取最新版本。 docker pull mongo2、运行容器 docker run -d --name mongo -p 27017:27017 \ -e MONGO_INITDB_ROOT_USERNAMEadmin \ -e MONGO_INITDB_ROOT_PASSWORD123456 \ mongo:latest --auth#由于 mongodb 默认情况下,…

SpringBoot-开启Actuator监控

Spring Boot Actuator是Spring Boot提供的一种管理和监控应用程序的框架,可以帮助我们了解应用程序的运行状况,提供HTTP端点来暴露应用程序的不同方面,如健康状况、指标、日志和运行时信息等。 开启Actuator监控,我们可以通过HTT…

用通俗易懂的方式讲解大模型分布式训练并行技术:MOE并行

前面的文章中讲述了数据并行、流水线并行、张量并行、序列并行、自动并行等多种并行技术。但现在的模型越来越大,训练样本越来越多,每个样本都需要经过模型的全部计算,这就导致了训练成本的平方级增长。 而当我们希望在牺牲极少的计算效率的…

Windows安全基础:认证基础知识

目录 Windows凭据 Windows访问控制模型 访问令牌: 安全标识符(SID): 安全描述符: 令牌安全防御 1、禁止域管理员异机登录 2、开启“审核进程创建”策略 Windows凭据 SSPI(Security Support Provide…

C#超市管理系统源码

C#超市管理系统源码 功能齐全的超市管理系统,专门美化过UI 请先附加数据库,否则无法进入系统 默认拥有最高权限账户为经理,密码为admin 压缩包内有使用说明

el-tree多个树进行节点同步联动(完整版)

2024.1.11今天我学习了如何对多个el-tree树进行相同节点的联动效果,如图: 这边有两棵树,我们发现第一个树和第二个树之间会有重复的指标,当我们选中第一个树的指标,我们希望第二个树如果也有重复的指标也能进行勾选上&…