【大数据技术基础 | 实验十二】Hive实验:Hive分区

news/2024/11/23 20:06:33/

在这里插入图片描述

文章目录

    • 一、实验目的
    • 二、实验要求
    • 三、实验原理
    • 四、实验环境
    • 五、实验步骤
      • (一)启动Hadoop集群
      • (二)用命令进入Hive客户端
      • (三)通过HQL语句进行实验
    • 六、实验结果
    • 七、实验心得


一、实验目的

掌握Hive分区的用法,加深对Hive分区概念的理解,了解Hive表在HDFS的存储目录结构。

二、实验要求

创建一个Hive分区表;根据数据年份创建year=2014和year=2015两个分区;将2015年的数据导入到year=2015的分区;在Hive界面用条件year=2015查询2015年的数据。

三、实验原理

分区(Partition)对应于数据库中的 分区(Partition)列的密集索引,但是Hive中分区(Partition)的组织方式和数据库中的很不相同。在Hive中,表中的一个分区(Partition)对应于表下的一个目录,所有的分区(Partition)的数据都存储在对应的目录中。例如:pvs表中包含ds和ctry两个分区(Partition),则对应于ds = 20090801, ctry = US的HDFS子目录为:/wh/pvs/ds=20090801/ctry=US;对应于ds = 20090801, ctry = CA的HDFS子目录为;/wh/pvs/ds=20090801/ctry=CA

外部表(External Table)指向已经在HDFS中存在的数据,可以创建分区(Partition)。它和Table在元数据的组织上是相同的,而实际数据的存储则有较大的差异。

Table的创建过程和数据加载过程(这两个过程可以在同一个语句中完成),在加载数据的过程中,实际数据会被移动到数据仓库目录中;之后对数据的访问将会直接在数据仓库目录中完成。删除表时,表中的数据和元数据将会被同时删除。

四、实验环境

  • 云创大数据实验平台:
    在这里插入图片描述
  • Java 版本:jdk1.7.0_79
  • Hadoop 版本:hadoop-2.7.1
  • Hive 版本:hive-1.2.1

五、实验步骤

这里可以点击一键搭建,部署好实验环境,具体详细步骤可参考:
大数据技术基础 | 实验三】HDFS实验:部署HDFS,
大数据技术基础 | 实验十】Hive实验:部署Hive。

因为Hive依赖于MapReduce,所以本实验之前先要启动Hadoop集群,然后再启动Hive进行实验,主要包括以下三个步骤。

(一)启动Hadoop集群

在主节点进入Hadoop安装目录,启动Hadoop集群。

cd /usr/cstor/hadoop/sbin
./start-all.sh

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

(二)用命令进入Hive客户端

进入Hive安装目录,用命令进入Hive客户端。

cd  /usr/cstor/hive
bin/hive

在这里插入图片描述

(三)通过HQL语句进行实验

进入客户端后,查看Hive数据库,并选择default数据库:

hive> show databases;
hive> use default;

在这里插入图片描述

在命令端创建Hive分区表:

hive> create table parthive (createdate string, value string) partitioned by (year string) row format delimited fields terminated by '\t';

查看新建的表:

hive> show tables;

在这里插入图片描述

给parthive表创建两个分区:

hive> alter table parthive add partition(year='2014');
hive> alter table parthive add partition(year='2015');

在这里插入图片描述

查看parthive的表结构:

hive> describe parthive;

在这里插入图片描述

向year=2015分区导入本地数据:

hive> load data local inpath '/root/data/12/parthive.txt' into table parthive partition(year='2015');

在这里插入图片描述

根据条件查询year=2015的数据:

hive> select * from parthive t where t.year='2015';

在这里插入图片描述

根据条件统计year=2015的数据:

hive> select count(*) from parthive where year='2015';

在这里插入图片描述

六、实验结果

用命令查看HDFS文件,Hive中parthive表在HDFS文件中的存储目录结构如下图所示:

cd /usr/cstor/hadoop
bin/hadoop fs -ls /user/hive/warehouse/parthive

在这里插入图片描述

Hive客户端查询结果如下图所示:

在这里插入图片描述

Hive客户端统计结果如下图所示:

在这里插入图片描述

七、实验心得

  Hive分区的实践过程中,我深刻体会到了Hive分区在大数据处理中的核心价值和重要性。实验之初,我对Hive分区的概念仅停留在理论层面,但通过实际操作,我逐渐明白了分区是如何在Hive中运作的。Hive中的分区对应于表下的一个目录,这种存储方式不仅使得数据的管理更为有序,而且大大提高了数据查询的效率。特别是当面对海量数据时,通过分区可以迅速定位到所需数据,避免了全表扫描的庞大开销。

  在实验过程中,我按照要求创建了一个Hive分区表,并成功地为该表添加了year为2014和2015的两个分区。随后,我将2015年的数据导入到year=2015的分区中,并尝试用条件查询和统计来验证分区的效果。当我在Hive客户端中输入查询语句,迅速得到结果时,我深刻感受到了Hive分区带来的查询性能提升。

  此外,通过本次实验,我还对Hive与HDFS的集成有了更深入的了解。Hive表在HDFS中的存储目录结构与分区密切相关,这使得我能够更好地理解Hive数据在底层存储系统中的组织方式。

  总的来说,这次Hive分区实验不仅让我掌握了Hive分区的用法,更让我对Hive在大数据处理中的强大功能有了更深刻的认识。我坚信,在未来的大数据学习和实践中,Hive分区将成为我处理和分析大数据的重要工具之一。通过这次实验,我更加坚定了自己学习大数据技术的决心和信心。

:以上文中的数据文件及相关资源下载地址:
链接:https://pan.quark.cn/s/5645ecbb3861
提取码:kmzw


http://www.ppmy.cn/news/1549358.html

相关文章

QT 实现仿制 网络调试器(未实现连接唯一性) QT5.12.3环境 C++实现

网络调试助手&#xff1a; 提前准备&#xff1a;在编写代码前&#xff0c;要在.pro工程文件中&#xff0c;添加network模块。 服务端&#xff1a; 代码&#xff1a; widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QtWidgets> #inclu…

cocos creator 3.8 一些简单的操作技巧,材质的创建 1

这是一个飞机的3D模型与贴图 导入到cocos中&#xff0c;法线模型文件中已经包含了mesh、material、prefab&#xff0c;也就是模型、材质与预制。界面上创建一个空节点Plane&#xff0c;将模型直接拖入到Plane下。新建材质如图下 Effect属性选择builtin-unlit&#xff0c;不需…

谈谈Mysql的常见基础问题

一.为什么Mysql选择B树作为索引&#xff1f; 索引(Index)是帮助MySQL高效获取数据的数据结构&#xff1b; 但是索引的数据结构有多种&#xff0c;如MySQL的InnoDB存储引擎支持B树索引还有哈希索引(可以理解为简单的HashMap)。 而针对关系型的数据&#xff0c;如果选用哈希索引…

【C++】几个基本容器的模拟实现(string,vector,list,stack,queue,priority_queue)

目录 一.string 二.vector 三.list 四.stack 五.queue 六.priority_queue 一.string #pragma oncenamespace hebre {class string{public:typedef char* iterator;typedef const char* const_iterator;//Member functionsstring():_str(new char[1]{\0}),_size(0),_capac…

Jetpack Compose 如何适配不同分辨率设备

文章目录 前言1、获取屏幕信息2、使用响应式布局适配屏幕2.1 动态调整布局 3、 精准适配特定分辨率4、多分辨率预览5、针对屏幕密度的适配6、 实战&#xff1a;流式网格布局适配(例子)总结 前言 在移动开发中&#xff0c;适配不同分辨率和屏幕大小是不可避免的挑战。Jetpack C…

解决BUG: Since 17.0, the “attrs“ and “states“ attributes are no longer used.

从Odoo 17.0开始&#xff0c;attrs和states属性不再使用&#xff0c;取而代之的是使用depends和domain属性来控制字段的可见性和其他行为。如果您想要在选择国家之后继续选择州&#xff0c;并且希望在选择了国家之后才显示州字段&#xff0c;您可以使用depends属性来实现这一点…

C++语言之模版与类型转换

模版 C的泛型编程 可以将数据类型作为参数进行传递 关键字: C模版的语法使用"<>"来表示泛型类型,并使用关键字template来定义和声明模版 分类: 模版函数 模版类 模版函数 语法: template<class 假设的类型1,class 假设的类型2,.......> 或 template<t…

aws建立多区域只读库

文章目录 一、Aurora数据库创建多区域注意项&#xff1a;二、aws-rds多区域只读库建立三、cli 创建实例: 一、Aurora数据库创建多区域注意项&#xff1a; aurora数据库 开启跨区域必须是主库不低于db.r5.large规格, 目标区域規格使用db.r5.large&#xff0c;使用低于此规格的将…