分享好友 最新动态首页 最新动态分类 切换频道
数据工程师:Hive 分区表 & 数据加载方式,效率提升必备技能,值得收藏!
2024-12-26 11:40
1. Hive表数据的导入方式
1.1 本地上传至hdfs
命令:

例如:测试文件 test_001.txt 内容如下

在 hdfs 绝对路径:/user/hive/warehouse/mytest.db/ 下有一张表 test_001,建表语句如下:

使用如下命令将 test_001.txt 的内容上传至 /user/hive/warehouse/mytest.db/test_001 表中

注意:

test_001.txt 文件内容中:数据类型、数据列数、列数之间的分隔符要与 hdfs 中 test_001 表定义的一一对应。

1.2 本地导入
命令:

示例:

含义:

将 /user/xiaomin.liu/hive_testdata 目录下 student.csv 文件的内容加载至 hdfs 中的 student 表中。

注意:

1. student.csv 文件内容中:数据类型、数据列数、列数之间的分隔符要与 hdfs 中 student 表定义的一一对应。

2. 使用本地导入的方式加载数据至 hive,使用的是复制操作,即当本地路径下的文件被加载至 hive 后,该本地路径下的文件依然存在,不会消失。

1.3 hdfs导入
命令:

示例:

含义:

将 hdfs 路径为 /user/warehouse/test 下的 student.txt 文件的数据加载至 hdfs 中的 student 表中。

注意:

使用 hdfs 导入数据至 hive,使用的是剪切操作,即原 hdfs 路径下的文件在被导入至 hive 后,原 hdfs 路径下的文件将不存在了。

1.4 覆盖导入

本地导入命令:

hdfs导入命令:

示例: 本地导入命令:

hdfs导入命令:

含义:

同1.2中的本地导入和1.3中的 hdfs 导入类似,只是新增的关键字 overwrite 会将表中已有的数据进行覆盖操作。

1.5 查询导入

命令:

示例:

含义:将表 student 的结构与数据复制一份给到表 sub_student。

1.6 insert导入

追加模式命令:

示例:

含义:将表 student 的数据以 append 追加的方式写入表 sub_student 中。

覆盖模式命令:

示例:

含义:将表 student 的数据以覆盖的方式写入表 sub_student 中。

2. Hive 分区表操作
1.1 分区表的概念

Hive 中分区表的意思是按照表的某一列列名(1个字段)或某几列列名(多个字段)作为类似文件夹的形式来隔离分开存放数据,以便提高检索效率和管理效率。

例如: 公司要收集网站用户登录日志进行用户数据行为分析,假设已存在 /user/login/warehouse/login_record 作为记录登录日志的存储表,如果每天都将日志写入该表,日积月累,login_record 表内容越来越多。

在查询时进行全表扫描耗费的资源会非常多,等待的时间也会特别长。严重影响到了数据分析的效率。

在这种情况下,我们可以采用创建分区表的方法来创建 login_record 表,以日期对login_record 表进行分区,不同日期的日志信息存储到不同的日期分区中。在查询时可指定日期分区来进行查询,可以有效提高查询效率。

简言之,分区表是指在系统上建立文件夹,把不同维度的分类数据放在不同文件夹下面,查询时通过 where 子句过滤,只对指定目录下的内容进行查询,加快查询速度。

1.2 分区表创建语法

分区表 hive sql 创建语句如下:

分区表在创建时关键字是:partitioned by

括号里跟上分区字段名及其字段类型,这样在创建表时就指明要创建的是一个分区表,上述创建语句说明要创建一个分区字段为:date,且类型为 string 类型的分区表,表名是 login_logs。

1.3 多分区表创建方式

多分区表 hive sql 创建语句如下:

与1.2中分区表创建语句的区别在于关键字 partitioned by 后面的参数是指定了多个分区字段,每个分区字段都需要指定字段类型,多字段之间以逗号分隔。

例如: dws_test_001_daily_df 表有2个分区字段,分区字段分别是:dt,hotel。

hdfs多分区(文件夹)信息查询:一级分区(文件夹)

命令:

上图展示的是一级分区字段:dt,相当于一级文件夹。

hdfs多分区(文件夹)信息查询:二级分区(文件夹)

命令:

上图展示的是二级分区字段:hotel,相当于二级文件夹。

load 数据时可以指定分区来存储目标数据,然后在查询时 where 条件设置 dt 和 hotel 为指定目标值,则可达到缩小数据查询范围的目的,进而提高查询效率。

1.4 查看分区数据

1.查看分区表数据

命令:

查询 sql 中以分区字段 year 和 month 作为 where 条件进行查询,与普通的 mysql 语句在语法上没有区别,但是在数据底层意义上差异较大,使用分区字段进行条件查询,相当于在指定目录:year='2021' 且 month='11' 下进行数据的搜索。

2.查看分区信息 命令:

上图可以看出查询结果为一级分区 dt=2021-10-31下所有二级分区 hotel 的信息。

1.5 分区表加载数据

分区表加载数据的方式与非分区表没有本质区别,只是在语法上有些许变化,具体加载数据的方式可参考上方的 Hive 表数据的导入方式。

示例: 分区表从本地导入 hdfs 语法:

含义:

将本地的 login_data.csv 文件内容导入到 hdfs 中 login_logs 表的year='2021',month='10' 的分区中。

1.6 修改分区

命令:

1.7 添加分区

添加分区命令:

插入数据命令:

1.8 删除分区

命令:

小结:

最新文章
谷歌搜索引擎优化(SEO)入门指南
随着互联网的快速发展,搜索引擎优化(SEO)已成为众多企业和个人网站不可或缺的一部分。SEO能够帮助您的网站在搜索引擎结果页(SERP)中获得更高的排名,从而增加曝光率和流量,提高销售和品牌知名度。在本文中,我们将向您介绍SEO的基本
关键词排名优化哪家?选择合适的SEO公司助你赢得流量与市场
不同的行业、不同的企业在关键词优化方面的需求各不相同,因此,选择SEO公司时,是否能够提供定制化服务是一个重要的考量标准。优秀的SEO公司会根据企业的实际情况,分析其市场定位、目标客户群体、竞争对手以及产品特点,从而提出量身定制
美职篮巅峰对决:球员强度全面排行,揭秘最强球星TOP榜单推荐
本文目录导读:T0强度排行T1强度排行T2强度排行在美职篮(NBA)的巅峰对决中,球员的强度是决定比赛胜负的关键因素之一,以下是一份基于球员实力、表现以及影响力的全面排行,揭秘最强球星TOP榜单推荐:1、迈克尔·乔丹:作为篮球历史上的
比较好的ai写作工具有哪些
以下是一些比较好的AI写作工具:1. 聪明灵犀(PC):集AI写作、AI聊天、AI改写、AI绘画、AI翻译等功能于一体,可以满足用户不同的创作需求。2. Copysmith:专注于营销文案的生成,能够根据用户输入的关键词和需求快速生成高质量的营销文案
网站目录 提交自己的网站有利于外链吗
提交自己的网站到网站目录(也称为网站分类目录或网址导航)可以有助于增加外链(外部链接),但这并不是唯一的或最主要的优势,而且效果因多种因素而异。以下是关于网站目录提交和外链的一些考虑点&#
网站SEO优化中的关键词选取策略
“我们的网站做了优化,为什么流量还是上不去?”这是许多青岛本地企业常见的困惑。其实,问题很可能出在关键词的选取上。关键词是SEO的核心,选择不当会导致精准流量缺失,或者吸引了大量与业务无关的用户。那么,如何精准选取关键词,让
置顶怎么实现链接跳转加企业微信?精选热门
实现通过外部浏览器链接调起企业微信添加好友的功能,通常需要进行以下步骤:生成员工链接:企业微信管理员可以在企业微信后台生成员工链接,用于添加好友。这个链接会包含一个特定的地址,格式类似于weixin://biz/ww/profile/https://work
蚂蚁金服阳振坤:用10年时间打造一个产品
“如果大家当时能看见原来十年后OceanBase能长成这样,可能十年前OceanBase得到的支持会好很多。但是这种如果是不存在的,很多时候你要先证明自己。”根据工信部数据显示,1998年,中国软件企业5000家,市场规模325亿;到了2018年底,中国软
目前市面上哪种微型货车比较好呢?
今天找车网小编整理了目前市面上哪种微型货车比较好呢?相关内容,希望能帮助到大家,一起来看下吧。1、目前市面上哪种微型货车比较好呢?2、11月两厢车销量排行出炉,车型细分为:微型,小型,紧凑级3、微型轿车排行榜 1.五菱之光(推荐)
详细笔记:OpenAI 发布会上的关键信息(上)
本文来自微信公众号:AI 破壳儿,原文标题:《详细笔记:OpenAI 发布会上的关键信息(上)》OpenAI 正在进行一场为期 12 天的发布会“马拉松”,目前已经进行到第 7 天。发布会的形式比较简单:每天在 YouTube 放出视频,主要由团队一线成
相关文章
推荐文章
发表评论
0评