大数据应用——hive实验

 


 

任务一:完成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实验中取得更好的表现。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肉肉肉肉肉肉~丸子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值