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

这篇具有很好参考价值的文章主要介绍了Hive分区表实战 - 多分区字段。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、实战概述

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

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

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

二、实战步骤

(一)创建学校数据库

  • 执行语句:create database school;
    Hive分区表实战 - 多分区字段,数仓技术Hive入门,hive,分区表,多分区字段
  • 执行语句:use school;,切换到school数据库
    Hive分区表实战 - 多分区字段,数仓技术Hive入门,hive,分区表,多分区字段

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

  • 执行语句:CREATE TABLE university (id INT, name STRING) PARTITIONED BY (province STRING, city STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ';
    Hive分区表实战 - 多分区字段,数仓技术Hive入门,hive,分区表,多分区字段
  • 该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文件
    Hive分区表实战 - 多分区字段,数仓技术Hive入门,hive,分区表,多分区字段

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

  • 在master虚拟机上创建sc_lz_schools.txt文件
    Hive分区表实战 - 多分区字段,数仓技术Hive入门,hive,分区表,多分区字段

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

  • 在master虚拟机上创建js_nj_schools.txt文件
    Hive分区表实战 - 多分区字段,数仓技术Hive入门,hive,分区表,多分区字段

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

  • 在master虚拟机上创建js_sz_schools.txt文件
    Hive分区表实战 - 多分区字段,数仓技术Hive入门,hive,分区表,多分区字段

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

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');
    Hive分区表实战 - 多分区字段,数仓技术Hive入门,hive,分区表,多分区字段

  • 这段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');
    Hive分区表实战 - 多分区字段,数仓技术Hive入门,hive,分区表,多分区字段文章来源地址https://www.toymoban.com/news/detail-791948.html

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');
    Hive分区表实战 - 多分区字段,数仓技术Hive入门,hive,分区表,多分区字段

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');
    Hive分区表实战 - 多分区字段,数仓技术Hive入门,hive,分区表,多分区字段

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

1、查看全部记录

  • 执行语句:SELECT * FROM university;
    Hive分区表实战 - 多分区字段,数仓技术Hive入门,hive,分区表,多分区字段

2、查看江苏分区记录

  • 执行语句:SELECT * FROM university WHERE province = 'js';
    Hive分区表实战 - 多分区字段,数仓技术Hive入门,hive,分区表,多分区字段

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

  • 执行命令:hdfs dfs -ls -R /user/hive/warehouse/school.db
    Hive分区表实战 - 多分区字段,数仓技术Hive入门,hive,分区表,多分区字段

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

1、登录MySQL Hive Metastore数据库

  • 执行命令:mysql -uroot -p903213,登录MySQL,然后执行use hive;,打开hive元数据库
    Hive分区表实战 - 多分区字段,数仓技术Hive入门,hive,分区表,多分区字段

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

  • 执行语句:SELECT * FROM COLUMNS_V2;,university分区表的CD_ID值是33
    Hive分区表实战 - 多分区字段,数仓技术Hive入门,hive,分区表,多分区字段
  • 执行语句:SELECT SD_ID, CD_ID, LOCATION FROM SDS WHERE CD_ID = 33;
    Hive分区表实战 - 多分区字段,数仓技术Hive入门,hive,分区表,多分区字段

三、实战总结

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

四、课后练习

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

到了这里,关于Hive分区表实战 - 多分区字段的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Hive 分区表 (Partitioned Tables) 『 创建分区表 | CRUD分区 | 修复分区 | 数据导入(静态分区、动态分区) | 查询数据/表结构』

    条件:假如现有一个角色表 t_all_hero ,该表中有6个清洗干净的互不干扰的数据文件:射手、坦克、战士、法师、刺客、辅助 要求:查找出名字为射手且生命值大于6000的角色人数 惯性解决方法:按照MySQL思维很容易想到 问:如何提高效率?这样虽然能够解决问题,但是由于要

    2024年02月04日
    浏览(78)
  • Hive分区表修改(增删)列

    环境:CDH6.3.0,Hive 2.1.1-cdh6.3.0 基础数据分区表test1,包含a,b,c,d共4列加分区列p_day,向其中插入两行数据 表中数据及parquet文件信息如下: test2表直接使用test1表的文件: 修复分区并查询数据 删除test2表的a列,看起来只有通过replace columns实现,但是运行报错,根据官方文档,只

    2023年04月26日
    浏览(88)
  • Hive创建分区表并插入数据

    业务中经常会遇到这种需求:数据每天全量更新,但是要求月底将数据单独保存一份以供后期查询某月节点的信息。这时就要考虑用到Hive的分区表实现,即按照月份创建分区表,相当于新的月份数据保存在新表,进而实现保存了历史数据。 分区表的创建本质是在HDFS创建了一

    2024年02月07日
    浏览(50)
  • Hive 分区表和分桶表

    在《Hive 建表语句解析》文章中,建表的时候我们可以使用 PARTITIONED BY 子句和 CLUSTERED BY 子句来创建分区表和分桶表,为什么要创建分区表和分桶表呢?分区表和分桶表有什么区别呢? 1. 为什么分区 在Hive 查询中一般会扫描整个表内容,会消耗很多时间做没必要的工作。有时

    2023年04月23日
    浏览(67)
  • Hive ---- 分区表和分桶表

    Hive中的分区就是把一张大表的数据按照业务需要分散的存储到多个目录,每个目录就称为该表的一个分区。在查询时通过where子句中的表达式选择查询所需要的分区,这样的查询效率会提高很多。 1. 创建分区表 2. 分区表读写数据 1)写数据 (1)load 数据准备 在/opt/module/hiv

    2024年02月10日
    浏览(61)
  • 二次开发DataX以支持HIVE分区表

            最近在一个大数据的项目开发中使用到了数据同步工具DataX,但在使用过程中发现了DataX对HIve分区表的支持不太友好。         具体体现在将数据库中的数据同步到HIVE分区表时,写入目录为HIVE表分区为dt=XXXX,如果不提前创建该分区,会报目录不存在的错误,如

    2024年02月16日
    浏览(48)
  • 【Hive大数据】Hive分区表与分桶表使用详解

    目录 一、分区概念产生背景 二、分区表特点 三、分区表类型 3.1 单分区 3.2 多分区

    2024年02月03日
    浏览(48)
  • hive分区表之insert overwrite 注意事项

    hive version 3.1.3 以往我们插入分区 需要 insert ovewrite table  p_table partition(period_id=‘202212’)  select id name from xxxx;  或者是 insert overwrite table  select  id,name,period_id from table where period_id=202212 前者是指定分区,后者是动态分区。没啥好说的。 但是今天遇到一个问题,如果我查询的数

    2024年02月13日
    浏览(57)
  • HIVE表数据快速构造(分区表、orc、text)

    引言 当需要在hive数仓中去创建测试表并构造测试数据时,通常需要在安装了hive客户端的服务器环境下,通过执行命令的方式建表。通过在HDFS上上传和加载数据文件的方式来加载数据到hive表中。其中操作算不得多复杂,但比较依赖对环境和命令的熟悉,并且操作不够可视化

    2024年02月16日
    浏览(47)
  • 【DolphinScheduler】datax读取hive分区表时,空分区、分区无数据任务报错问题解决

    最近在使用海豚调度DolphinScheduler的Datax组件时,遇到这么一个问题:之前给客户使用海豚做的离线数仓的分层搭建,一直都运行好好的,过了个元旦,这几天突然在数仓做任务时报错,具体报错信息如下: com.alibaba.datax.common.exception.DataXException: Code:[HdfsReader-08], Description:[您尝

    2024年01月16日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包