首页 > 其他分享 >hive数据分析

hive数据分析

时间:2023-09-25 16:56:39浏览次数:34  
标签:数据分析 string nbr sale hive day id round

HIVE数据分析实验报告

信2105-3 20213728杨申龙

  1. 数据导入

 将csv文件导入到虚拟机的hive数据库中,并通过datagrip软件实现对数据库的可视化操作

 

  1. 数据清洗

在datagrip中进行如下操作,将数值清洗为真实日期

insert overwrite table test2 select date_add('2021-09-00',cast(day_id as int)) as day_id,sale_nbr as sale_nbr,buy_nbr as buy_nbr,cnt as cnt,round as round from test;

3.

(1)统计每天各个机场的销售数量和销售金额

create table jieguo1(day_id string,sale_nbr string,

cnt string,round string)

ROW format delimited fields terminated by ',' STORED AS TEXTFILE;

create table jieguo01(day_id string,sale_nbr string,

cnt string,round string)

ROW format delimited fields terminated by ',' STORED AS TEXTFILE;

insert overwrite table jieguo1  select day_id as day_id ,sale_nbr as sale_nbr,sum(cnt) as cnt ,sum(round) as round from test2 where sale_nbr like 'C%'  group by day_id,sale_nbr;

 

(2)统计每天各个代理商的销售数量和销售金额

create table jieguo02(day_id string,sale_nbr string,cnt string,round string)

ROW format delimited fields terminated by ',' STORED AS TEXTFILE;

create table jieguo2(day_id string,sale_nbr string,

cnt string,round string)

ROW format delimited fields terminated by ',' STORED AS TEXTFILE;

insert overwrite table jieguo2  select day_id as day_id ,sale_nbr as sale_nbr,sum(cnt) as cnt ,sum(round) as round from test2 where sale_nbr like 'O%'  group by day_id,sale_nbr;

 

(3)统计每天各个代理商的销售活跃度

create table jieguo03(day_id String,sale_nbr String,sale_number String) ROW format delimited fields terminated by ',';

 insert overwrite table jieguo03 select day_id,sale_nbr,COUNT(*) as sale_number from sales3 group by day_id,sale_nbr having sale_nbr like 'O%';

 

(4)汇总统计9月1日到9月15日之间各个代理商的销售利润

create table daiout as select day_id as day_id,sale_nbr as sale_nbr,sum(cnt)as cnt,sum(round)as round from sales3 where sale_nbr like 'O%' group by day_id,sale_nbr; 

create table daiin as select day_id as day_id,buy_nbr as buy_nbr,sum(cnt)as cnt,sum(round)as round from sales3 where buy_nbr like 'O%' group by day_id,buy_nbr; 

create table daili as select daiin.day_id as day_id,daiout.sale_nbr as sale_nbr,daiin.cnt as incnt,daiin.round as inround,daiout.cnt as outcnt,daiout.round as outround,daiout.round-daiin.round as li from daiin join daiout on (daiin.buy_nbr=daiout.sale_nbr);

 

以上代码均在datagrip软件中实现

 

4、处理结果入库

用datagrip分别连接hive数据库和mysql数据库,将hive数据库中的表复制到mysql数据库中

 

5、数据可视化展示

利用echarts工具进行数据的图形化显示,java部分代码如下

DataDAO.java

package Database;

 

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.util.ArrayList;

import java.util.List;

 

public class DataDAO {

 

    private static final String JDBC_URL = "jdbc:mysql://localhost:3306/t";

    private static final String JDBC_USER = "root";

    private static final String JDBC_PASSWORD = "123456";

 

    public List<DataPoint> getData() {

        List<DataPoint> dataPoints = new ArrayList<>();

        try {

            Class.forName("com.mysql.cj.jdbc.Driver");

            Connection connection = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASSWORD);

            String query = "SELECT date, value FROM jieguo1";

            PreparedStatement preparedStatement = connection.prepareStatement(query);

            ResultSet resultSet = preparedStatement.executeQuery();

            while (resultSet.next()) {

                String date = resultSet.getString("date");

                String value = resultSet.getString("value");

                DataPoint dataPoint = new DataPoint(date, value);

                dataPoints.add(dataPoint);

            }

            resultSet.close();

            preparedStatement.close();

            connection.close();

        } catch (Exception e) {

            e.printStackTrace();

        }

        return dataPoints;

    }

}

 

DataPoint.java

package Database;

 

public class DataPoint {

    private String date;

    private String value;

 

    public DataPoint(String date, String value) {

        this.date = date;

        this.value = value;

    }

 

    public String getDate() {

        return date;

    }

 

    public String getValue() {

        return value;

    }

}

 

Chart.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<%@ page import="Database.DataPoint" %>

<%@ page import="Database.DataDAO" %>

<%@ page import="java.util.List" %>

 

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title>柱状图</title>

    <!-- 引入ECharts库 -->

    <script src="js/echarts.min.js"></script>

</head>

<body>

    <!-- Create a container for the bar chart -->

    <div id="barChart" style="width: 1000px; height: 600px;"></div>

   

    <%

        // 获取数据并转换为JSON格式

        DataDAO dataDAO = new DataDAO();

        List<DataPoint> dataPoints = dataDAO.getData();

        String dataJSON = "[";

        for (DataPoint dataPoint : dataPoints) {

            // 在这里,将日期作为柱状图的横坐标,值作为柱状图的数据

            dataJSON += "{'name': '" + dataPoint.getDate() + "', 'value': " + dataPoint.getValue() + "},";

        }

        dataJSON = dataJSON.substring(0, dataJSON.length() - 1) + "]";

    %>

   

    <script>

        var data = <%= dataJSON %>;

       

        // 使用ECharts绘制柱状图

        var myChart = echarts.init(document.getElementById('barChart'));

        var option = {

            title: {

                text: '柱状图'

            },

            xAxis: {

                type: 'category',

                data: data.map(item => item.name) // Use dates as category labels

            },

            yAxis: {

                type: 'value',

                name: 'Value'

            },

            tooltip: {

                trigger: 'axis',

                axisPointer: {

                    type: 'shadow'

                },

                formatter: '{b}: {c}'

            },

            series: [

                {

                    name: '数据',

                    type: 'bar',

                    data: data.map(item => item.value) // Use values for the bar heights

                }

            ]

        };

        myChart.setOption(option);

    </script>

</body>

</html>

 

标签:数据分析,string,nbr,sale,hive,day,id,round
From: https://www.cnblogs.com/ysl666/p/17728282.html

相关文章

  • hive
    hive测试步骤1.在hive中建表,一个表存放原始数据,一个表存放清洗后的数据create table sales_initial (    day_idvarchar(30),    sale_nbrvarchar(30),    buy_nbrvarchar(30),    cntvarchar(30),    roundvarchar(30))rowformatdelimite......
  • 软件工程测试--hive数据分析,步骤
    下面这里的语句在上一个博客里有需要的伙伴可以去找......
  • hive测试
    这次的hive测试的流程主要分为以下几个步骤1、数据导入到hive数据库里2、对数据清洗3、数据分析处理4、将处理后的数据导出到MySQL5、通过网页进行数据可视化   一.数据导入到hive数据库里1)建立初始表createtablesales_sample_20214044(`day_id`stringcomme......
  • 2023年东莞/深圳CPDA数据分析师认证报名小哥哥来这
    CPDA数据分析师认证是大数据方面的认证,助力数据分析人员打下扎实的数据分析基础知识功底,为入门数据分析保驾护航。帮助数据分析人员掌握系统化的数据分析思维和方法论,提升工作效率和决策能力,遇到问题能够举一反三,为大部分决策难题提供解决方案。帮助数据分析人员掌握几种通用的数据......
  • 对企业数据分析来说,使用数据可视化至关重要的几个原因?
    在当今信息时代,企业面临着大量的数据产生和积累。这些数据蕴含着巨大的价值,可以为企业提供深入洞察、支持决策以及发掘业务机会。然而,将这些庞大的数据转化为有意义的见解并进行决策,并不是一件容易的事情。这正是为什么数据可视化在企业数据分析中至关重要的原因之一。1.向日益......
  • hive极限测试2
        ......
  • hadoop和hive的兼容问题
    本人之前搭建的集群是hadoop3.3.5+hive3.1.3版本,后来发现这两个版本不兼容,虽然官方文档里面说hive3.1.3版本兼容hadoop3.x.y版本,但是当我在使用hive执行插入语句时发现一直报同一个错误java.lang.ClassCastException:org.apache.hadoop.hdfs.protocol.proto.ClientNamenodePro......
  • HIVE增量同步方案2
    SELECTstudent_temp.id,coalesce(student_temp.age,student.age)asage,student_temp.name,coalesce(student_temp.dt,student.dt)asdtFROMstudent_tempFULLOUTERJOINstudentONstudent_temp.id=student.id;———————......
  • Could not open client transport with JDBC Uri: jdbc:hive2://node1:10000: java.n
    今天发现连接beeline是时候连接不上,不应该啊昨晚还可以的qaq  破案了,我启动了metastore之后忘记去启动hiveserver2hiveserver2都没启动能连上就怪了 一定一定要记得启动顺序!!!hadoop+metastore+hiveserver2+beeline ......
  • 使用sqoop export命令将hive数据导入mysql
    描述一下因为我前两天的测试里面,用的是另外一种方法,所以今天想要尝试一下sqoopexport的方法,这个方法我之前也试过,但是一直报错,但是!我又来啦!!!相关步骤自己设置一个数量不多的csv文件:然后按照之前的步骤:上传,导入数据库:然后在mysql里面同时创建一个与hive数据库中结构一致......