【大数据基础实践】(六)数据仓库Hive的基本操作_熟悉hive的基本操作

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

service mysql stop

  • 启动
 service mysql start

5.1.3 配置MySql为hive元数据存储数据库

进入mysql shell

sudo mysql 或 sudo mysql –u root –p 命令,回车后会提示输入密码,前者输入当前系统用户密码,后者是输入 mysql root 用户密码一般为空,回车进入 mysql 命令行。这里 root是 mysql 安装时默认创建的用户,不是 Ubuntu 系统的 root 用户。

在这里插入图片描述

新建一个数据库用来保存hive元数据(hive_metadata_zqc)
在这里插入图片描述

在这里插入图片描述

  1. 配置mysql允许hive接入
    在这里插入图片描述
    将所有数据库的所有表的所有权限赋给新建的hive_zqc用户,hive_zqc、'hive’是后续操作中要对 hive-site.xml 文件配置的连接到 MySQL 数据库的用户名、密码,由你自己定义;

刷新mysql系统权限关系表
在这里插入图片描述
exit 退出
在这里插入图片描述
2. 配置hive

下载mysql jdbc包https://dev.mysql.com/downloads/connector/j/ ;

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
解压jdbc包后,将其中的jar包拷贝至hive安装目录下lib文件夹中
在这里插入图片描述
进入/usr/local/hive/conf 目录。将hive-default.xml.template 重命名为hive-default.xml 保存着各个配置参数的默认值。
在这里插入图片描述
新建一个hive-site.xml 配置文件,并添加如下内容,该文件内容会覆盖原默认值
在这里插入图片描述
箭头标记处说明:hive_metadata_zqc 是前面步骤 MySQL 里新建的 database、hive_zqc和 hive 是连接数据库的用户名以及密码;
在这里插入图片描述

<configuration>
        <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://localhost:3306/hive_metadata_zqc?createDatabaseIfNotExist=true</value>
        <description>JDBC connect string for a JDBC metastore</description>
        </property>

        <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
        <description>Driver class name for a JDBC metastore</description>
        </property>

        <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>hive_zqc</value>
        <description>username to use against metastore database</description>
        </property>

        <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>hive</value>
        <description>password to use against metastore database</description>
        </property>

</configuration>


  1. 初始化元数据库,启动 Hive,进入 Hive 运行时环境

初始化元数据库,不然有可能会报错。
在这里插入图片描述
可能出现错误
在这里插入图片描述
原因:com.google.common.base.Preconditions.checkArgument 这是因为 hive 内依赖的 guava.jar 和hadoop内的版本不一致造成的。

解决方法:查看hadoop安装目录下 share/hadoop/common/lib 内 guava.jar 版本,查看 hive安装目录下lib内guava.jar的版本,如果两者不一致,删除版本低的,并拷贝高版本的。
在这里插入图片描述
两个版本一样了
在这里插入图片描述
在进行一次初始化元数据库
在这里插入图片描述
成功了!
4. 启动Hive

启动hive 之前,请先启动hadoop集群(start-dfs.sh)和确保MySQL服务正常运行。“hive”命令启动 hive。
启动hadoop集群

在这里插入图片描述
启动mysql
在这里插入图片描述
启动hive
在这里插入图片描述

5.2 Shell进行实验内容

表1 student_zqc:

NameSexBirthDeptUid
LiuyiF2002/11/26CS180301
ChenerF2001/6/11CS180302
ZhangsanM2002/9/21CS180303
LisiF2001/1/26SE180201

表2 grade_zqc:

UidCourseGrade
180301Chinese90
180301Math58
180301English39
180302Chinese91
180302Math95
180302English75
180303Chinese60
180303Math58
180303English53
180201Chinese62
180201Math43
180201English74
5.2.1 新建一个数据库;

新建一个数据库db_xxx,添加扩展参数:日期、学号、姓名;使用该数据库做后续操作;设置命令行显示当前使用的数据库,请保证后续操作都能显示。

创建的时候添加了日期,学号,姓名,以及存放路径

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

5.2.2 新建表

新建student_xxx分区表(分区字段Dept)和grade_xxx内部表,分别查看表结构和存储路径;(字段类型自定义)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.2.3 添加分区

在表student_zqc中添加两个分区Dept=’CS’和Dept=’SE’,从本地导入数据到student_xxx表的两个分区中,分别查看两个分区所有记录,查看表数据存储目录;

在这里插入图片描述
从文件中加载数据,load data
语法 :

LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename

首先在本地主目录下创建数据文件 input.txt,并上传到 HDFS 中。
注意分隔符要跟你表设置一致。

  1. 本地创建两个文件
    input1.txt
    在这里插入图片描述
    input.txt
    在这里插入图片描述
  2. 将两个文件上传到HDFS
    在这里插入图片描述
  3. 在hive中加载
    在这里插入图片描述
  4. 查看是否加载成功 在这里插入图片描述
5.2.4 导入grade_zqc

从HDFS导入数据到grade_xxx表中,查看grade_xxx表所有记录,查看表数据存储目录;

本地创建表 input3.txt
在这里插入图片描述
上传到hdfs
在这里插入图片描述
加载到hive中
在这里插入图片描述
在这里插入图片描述

5.2.5 统计男、女生人数
select sex,count(1) from student_zqc group by sex;

在这里插入图片描述

5.2.6 统计每个学生所有科目的总分以及平均分

在这里插入图片描述

select uid,avg(grade) from grade_zqc group by uid;

在这里插入图片描述

5.2.7 统计每个科目有多少人以及每个科目平均成绩

在这里插入图片描述

在这里插入图片描述

5.2.8 查询chinese科目得分排前两名学生学号和分数;

在这里插入图片描述

5.2.9 创建一个新表rank_zqc保存CS系每个学生信息和科目总分,按成绩降序排序,并查询结果;

在这里插入图片描述

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

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

5.2.10 统计每个系所有科目平均成绩在所有系中的占比。

例如CS系Chinese科目平均成绩在所有系的比例是1.06。

在这里插入图片描述

在这里插入图片描述

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

5.2.11 统计每个系每个科目考试不合格学生的占比。

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

在这里插入图片描述

5.2.12 删除分区,删除表,删除库,退出Hive。(删除操作请谨慎!)

查看表分区
在这里插入图片描述
删除分区
在这里插入图片描述
删除表
在这里插入图片描述
删除库
在这里插入图片描述
退出
在这里插入图片描述

5.3 JavaApi进行实验内容

编写一个UDF,函数名UDFXxx,查询学生(输入字段:student_xxx.Birth)出生天数。给出定义和使用UDF的完整流程和截图。

添加包

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

在这里插入图片描述

import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class UDFzqc extends UDF{
    public final static DateTimeFormatter DEFAULT_DATE_FORMATTER = DateTimeFormat.forPattern("yyyy/MM/dd");
    private Text result = new Text();
    public Text evaluate(Text birthday) throws ParseException{
        DateTime dateTime = null;
        try {
            dateTime = DateTime.parse(birthday.toString(), DEFAULT_DATE_FORMATTER);


![img](https://img-blog.csdnimg.cn/img_convert/a8807c1fbe3dd7a747b78689187b6cc8.png)
![img](https://img-blog.csdnimg.cn/img_convert/17faf05781ee3a499cb594766f88ed62.png)
![img](https://img-blog.csdnimg.cn/img_convert/3c9a5d8629d75650f5793eefba3a21f1.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

), DEFAULT_DATE_FORMATTER);


[外链图片转存中...(img-uHn7KpGI-1715364604834)]
[外链图片转存中...(img-vSLNwZPg-1715364604835)]
[外链图片转存中...(img-iZvQeSqk-1715364604835)]

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值