大数据应用——hive实验

news/2024/11/30 0:37:17/

 


 

任务一:完成Hive内嵌模式部署

1.1 Hive部署

官网下载Hive安装包

(1)官网地址:Apache Hive

(2)文档查看地址:

https://cwili.apache.org/confluence/display/Hive/GettingStarted

(2)下载地址:Index of /dist/hive

(3)github地址:GitHub - apache/hive: Apache Hive

1.2 安装Hive

1.  上传安装包到Linux系统下并解压到指定目录

[hadoop@hadoop101 software]$ tar -zxvf /opt/software/apache-hi

ve-3.1.2- bin.tar.gz -C /opt/module/

2.   修改/etc/profile.d/my_env.sh,添加环境变量

3.  解决日志Jar包冲突

[atguigu@hadoop101 hive]$ mv lib/log4j-slf4j-impl-2.10.0.jar lib

/log4j-slf4j-impl-2.10.0.bak

4.  初始化元数据库

[hadoop@hadoop101 hive]$ bin/schematool -dbType derby -initS

Schema

5.  启动Hive

(1)启动hadoop集群

(2)启动Hive

[hadoop@hadoop101 hive]$bin/hive

1.3 Hive属性配置

1.  修改/opt/module/hive/conf/hive-log4j2.properties.tem

plate 文件名称为 hive-log4j2.properties

2.  在 hive-log4j2.properties 文件中修改 log 存放位置

hive.log.dir=/opt/module/hive/logs

            hive-site.xml中添加打印当前库和表头的配置

任务二:能够将Hive数据存储在HDFS上

1.  建立Hive表

首先,创建一个Hive表,用于存储数据,示例表结构为:

上述语句创建了一个名为employee的表,表中包含empid、name、salary和gender四个字段,字段类型分别为整型、字符串类型、浮点型和字符串类型。表中的数据将以逗号分隔的文本文件的形式进行存储,文件的存储格式为TEXTFILE。

2.  将数据存储到HDFS上

接下来将数据存储到HDFS上。在本地文件系统中创建文本文件employee.txt,该文件包含了一些雇员信息,例如:

将该文本文件上传到HDFS上,例如:

  1.  将数据导入到Hive表中

将数据导入到Hive表中,例如:

该语句将HDFS上的employee.txt文件中的数据加载到Hive表employee中。

  1.  在HDFS上操作数据

当数据存储在Hive表中后,我们可以通过Hive提供的SQL语句来查询和操作数据。同时,我们也可以通过HDFS命令来处理Hive表所存储的数据。

例如,我们可以使用以下命令查看HDFS上employee.txt文件的内容:

也可以使用以下命令将HDFS上的employee.txt文件导出到本地文件系统中:

任务三:进入Hive Shell,自行设计Hive表,完成常见的DDL操作和DML操作

3.1 DDL操作

   1.  创建数据库

CREATE DATABASE [IF NOT EXISTS] database_name

[COMMENT database_comment]

[LOCATION hdfs_path]

[WITH DBPROPERTIES (property_name=property_value, ...)];

  1. 创建一个数据库,数据库在HDFS上的默认存储路

径是/user/hive/warehouse/student_db.db。

(2)避免要创建的数据库已经存在错误,增加if not exists判断。

hive (default)> create database if not exists student_db;

(3)创建一个数据库,指定数据库在HDFS上存放的位置

hive (default)> create database student_db location '/student_db';

  1.  查询数据库
  1. 显示数据库

  1. 过滤显示查询的数据库

  1. 查看数据库详情—显示数据库信息

  1. 显示数据库详细信息,extended

  1. 切换当前数据库

  1.  修改数据库
  1. 用户可以使用 ALTER DATABASE 命令为某个数据库的 DBPROPERTIES 设置键-值对属性值,来描述这个数据库的属性信息。

hive (default)> alter database student_db set dbpro

perties('createtime'='20230622');

  1. 在hive中查看修改结果

  1. 删除数据库
  1. 删除空数据库

  1. 如果删除的数据库不存在,最好采用if exists判断数

据库是否存在

  1. 如果数据库不为空,可以采用cascade命令,强制删

  1. 创建表(管理表)

(1)建表语法

CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name

[(col_name data_type [COMMENT col_comment], ...)]

[COMMENT table_comment]

[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]

[CLUSTERED BY (col_name, col_name, ...)

[SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]

[ROW FORMAT row_format]

[STORED AS file_format]

[LOCATION hdfs_path]

[TBLPROPERTIES (property_name=property_value, ...)]

[AS select_statement]

  1. 案例实操
  1. 原始数据

  1. 普通创建表

  1. 根据查询结果创建表(查询结果会添加到创建的表

中)

  1. 根据已存在的表结构创建表

  1. 查询表的类型

  1. 外部表
  1. 理论

因为表是外部表,所以 Hive 并非认为其完全拥有这份数据。删除该表并不会删除掉这份数据,不过描述表的元数据信息会被删除掉。

  1. 案例实操
  1. 原始数据

  1. 上传数据到HDFS

  1. 建表语句,创建外部表

创建部门表

创建员工表

  1. 查看创建的表

  1. 查看表格式化数据

  1. 删除外部表

外部表删除后,hdfs 中的数据还在,但是 metadata 中 dept 的元数据已被删除

  1. 管理表与外部表的互相转换
  1. 查询表的类型

hive (default)> desc formatted student2;

  1. 修改内部表student2为外部表

  1. 查询表的类型

  1. 修改外部表student2为内部表

  1. 查询表的类型

  1. 修改表

重命名表

  1. 语法

ALTER TABLE table_name RENAME TO new_table_na

me

  1. 增加、修改、替换列信息
  1. 查询表结构

  1. 添加列

  1. 查询表结构

  1. 更新列

  1. 查询表结构

  1. 替换列

  1. 查询表结构

  1. 删除表

3.2 DML操作

1.  数据导入

(1)向表中装载数据(Load)

hive> load data [local] inpath '数据的 path' [overwrite] into table student [partition (partcol1=val1,…)];

  1. 创建一张表

  1. 加载本地文件到hive

  1. 加载HDFS文件到hive中

上传文件到HDFS

加载HDFS上数据

  1. 加载数据覆盖表中已有数据

上传文件到HDFS

加载数据覆盖表中已有数据

(2)通过查询语句向表中插入数据(Insert)

A. 创建一张表

  1. 基本插入数据

  1. 基本模式插入(根据单张表查询结果)

(3)查询语句中创建表并加载数据(As Select)

根据查询结果创建表(查询结果会添加到新创建的表中)

(4)创建表时通过Location指定加载数据路径

A. 创建表,并指定在HDFS上的位置

  1. 查询数据

  1.  数据导出
  1. Insert导出
  1. 将查询的结果导出到本地

  1. 将查询的结果格式化导出到本地

hive(default)>insert overwrite local directory '/opt/module/hi

ve/datas/export/student1'

ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' select * from student;

  1. 将查询的数据导出到HDFS上(没有local)

hive(default)>insert overwrite directory '/student_db/studen

T2'

ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' select * from student;

  1. Hadoop命令导出到本地

hive (default)> dfs -get /student_db/student/student.txt /

/opt/module/datas/export/student3.txt;

  1. Hive Shell 命令导出

  1. Export导出到HDFS上

  1. 清除表中数据

出现问题:hive进行插入操作时报错:NO Route To HostException:No Route to host

问题原因:由于Hive插入操作需要在YARN上提交MapReduce任务时无法访问YARN ResourceManager引起的。

解决方案:关闭防火墙,开启Hadoop集群

在进行Hive实验的过程中,得出如下结论:

熟悉Hive架构:在进行Hive实验之前,先要了解Hive的架构和工作原理,比如表的存储格式、元数据管理、查询优化等,这样可以更好地理解实验内容。

注意配置参数设置:在进行Hive实验时,需要根据实时的需求设置相关的配置参数,例如HDFS存储路径、JVM内存大小、任务队列等等,这些设置直接影响到实验的性能和稳定性。

数据源准备:在进行Hive实验前,需要对数据源进行准备和清理,以保证实验的有效性和正确性,常见的做法包括数据清洗、数据转换、数据格式设置等。

SQL语句调优:在进行Hive实验的时候,需要进行SQL语句的优化,以提高查询性能和效率。常见的调优手段包括剪枝优化、索引优化、加速器优化等。

实验结果分析:在进行Hive实验之后,需要对实验结果进行分析和总结,主要包括查询性能、资源占用、任务执行时间等指标,以便对实验过程进行改进。

总之,进行Hive实验需要具备扎实的Hadoop基础和SQL语言基础,并且需要有良好的数据分析能力和实验操作技巧。只有不断地积累经验和思考,才能够在Hive实验中取得更好的表现。


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

相关文章

运行matlab卡,Tesla K40c加速卡的安装已使用(2)软件篇

前言 在硬件篇中已经安装了Tesla K40加速卡安装在机箱中,接下来详细记录一下软件环境的搭建,更深层地,试着研究如何将该卡应用在大型工程运算中,主要是Visual Studio和Matlab环境下的运算。 软件安装环境 为了应对以后可能出现的这种错误,现记录搭建环境的过程,以及在实验…

黑苹果显卡加速_黑苹果的最终之路???难道非要一两万买一个MBP或者iMac???一个黑苹果玩家的漫漫长路……...

公众号已经有一段日子没有更新,是自己忙于工作,疏忽了对大家的关爱???不是!!!而是自己也很迷茫,寻求黑苹果的不断完善,以达到高性价比体验(工作)MacOS的魅力~ 这几个月的探索,也算是有的新的答案——黑苹果的目的其实很简单,无非就是用低成本打造一款能够作为…

性能测试怎么做?性能测试重点和各项性能测试流程(超级详细)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 性能测试基础 1&a…

卷积实现—im2col+gemm

普通卷积 看卷积的实现,先看其普通的计算方式:滑窗计算和其计算shape大小的公式,以及各个卷积特性对其计算的影响,比如:stride,group,dilation,pad等。 H o u t ( H i n − k h p …

i3与i5的区别

就拿i5二代2320和i5三代3450来说 处理器架构和制程不同 3450不是没有一二级缓存,如果没有缓存,处理器就废了,可能是你看的资料不完全 目前所有处理器都有一级二级缓存,三级缓存只有INTEl处理器有 没有一二级缓存,就没有…

微型计算机的 I3 I5是,i3与i5有什么区别

5处理器凭借对睿频技术的支持,相同主频的情况下,在测评成绩上,领先i3处理器400分~600分左右。一般与i5主频相同的i3处理器,价格也与i5极为接近,并不能很好体现性价比优势。 睿频简单来说可以认为他是一个处…

i3 10100和i5 10400的区别

i3-10100为4核8线程,基础频率为3.6GHz,睿频可达4.3GHz,热功耗为65W,带UHD630核显。 选i3 10100还是i5 10400这些点很重要!看完你就知道了 https://list.jd.com/list.html? i5 10400/10400F这款处理器,继续采用14nm制…

笔记本 i3 i5 i7 区别

惯例: 我是温浩然: 中央处理器(英文Central ProcessingUnit,CPU)是一台计算机的运算核心和控制核心。CPU、内部存储器和输入/输出设备是电子计算机三大核心部件。其功能主要是解释计算机指令以及处理计算机软件中的数据…