Hive实战 —— 利用Hive进行数据分析并将分析好的数据导出到mysql数据库中

🙆‍♂️🙆‍♂️ 写在前面

​🏠​ 个人主页:csdn春和
📚 推荐专栏:更多专栏尽在主页!
JavaWeb专栏(从入门到实战超详细!!!)
SSM专栏 (更新中…)
​📖​ 本期文章:Hive实战 —— 利用Hive进行数据分析并将分析好的数据导出到mysql数据库中
如果对您有帮助还请三连支持,定会一 一回访!🙋🏻‍♂️



📍 写在前面

本次文章记录自己的一次实验过程,详细实验请参考尚硅谷的Hive教程


hive实战

一、需求分析

统计热门视频Top10 (以播放数作为参考标准) 简单需求

将统计结果导出到mysql中

✔️ 目的为了熟悉各种操作过程

二、数据准备

2.1、查看原始数据

在这里插入图片描述

2.2、表的数据结构

字段 备注 详细描述
videoId 视频唯一id(String) 11位字符串
uploader 视频上传者(String) 上传视频的用户名String
age 视频年龄(int) 视频在平台上的整数天
category 视频类别(Array) 上传视频指定的视频分类
length 视频长度(Int) 整形数字标识的视频长度
views 观看次数(Int) 视频被浏览的次数
rate 视频评分(Double) 满分5分
Ratings 流量(Int) 视频的流量,整型数字
conments 评论数(Int) 一个视频的整数评论数
relatedId 相关视频id(Array) 相关视频的id,最多20个

2.3、数据清洗

通过观察原始数据形式,可以发现,视频可以有多个所属分类,每个所属分类用&符号分割,且分割的两边有空格字符,同时相关视频也是可以有多个相关视频,多个相关视频又用“\t”进行分割。为了分析数据时方便对存在多个子元素的数据进行操作,我们首先进行数据重组清洗操作。

即:将所有的类别用“&”分割,同时去掉两边空格,多个相关视频id也使用“&”进行分割。

我们使用过MapReduce进行数据清理

新建一个module 导入依赖

<dependencies>
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-client</artifactId>
        <version>3.1.3</version>
    </dependency>
</dependencies>

【1】封装工具类

package com.itch.video.etl;

/**
 * @author it春和
 * @create 2022-05-09 22:29
 */
public class EtlUtils {
   
    // 工具类

    /**
     * 数据清洗的方法
     * @param srcData 原始数据
     * @return
     */
    public static  String  etlData(String srcData){
   
        StringBuffer resultData = new StringBuffer();
        //1. 先将数据通过\t 切割
        String[] datas = srcData.split("\t");
        //2. 判断长度是否小于9
        if(datas.length <9){
   
            return null ;
        }
        //3. 将数据中的视频类别的空格去掉
        datas[3]=datas[3].replaceAll(" ",""); // 将所有空格替换成空串
        //4. 将数据中的关联视频id通过&拼接
        for (int i =
评论 45
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值