基于Hive的天气情况大数据分析系统(通过hive进行大数据分析将分析的数据通过sqoop导入到mysql,通过Django基于mysql的数据做可视化)

基于Hive的天气情况大数据分析系统(通过hive进行大数据分析将分析的数据通过sqoop导入到mysql,通过Django基于mysql的数据做可视化)

  1. Hive介绍:
    Hive是建立在Hadoop之上的数据仓库基础架构,它提供了类似于SQL的语言(HQL),可以对大规模数据集进行查询和分析。通过Hive,我们可以在分布式存储系统中进行复杂的数据处理和分析。

  2. Sqoop简介:
    Sqoop是一个用于在Apache Hadoop和关系型数据库之间传输数据的工具。我们可以使用Sqoop将Hive中的分析结果导出到关系型数据库中,如MySQL,以便进一步处理和可视化。

  3. Django概述:
    Django是一个高级的Python Web框架,它提供了一系列工具和库,用于快速构建Web应用程序。我们可以利用Django连接到MySQL数据库,处理数据,并将其呈现为可视化界面。

Hive大数据分析sql,基于数据创建hive表,然后进行数据分析

-- 创建数据库
CREATE DATABASE IF NOT EXISTS big_data;-- 切换到big_data数据库
USE big_data;load data local inpath '/export/server/28' INTO TABLE weather_data;
-- 创建weather_data表
CREATE TABLE IF NOT EXISTS weather_data (`date` STRING,high_temperature STRING,low_temperature STRING,weather STRING,wind_direction STRING,city STRING
)ROW FORMAT DELIMITED
FIELDS TERMINATED BY ',';-- 插入数据到weather_data表(示例数据)
INSERT INTO TABLE weather_data VALUES
(1, '2022-01-01 周六', '6°', '-7°', '晴', '西北风3级', '北京'),
(2, '2022-01-02 周日', '2°', '-7°', '多云', '南风2级', '北京');-- 创建etl_weather_data表
CREATE TABLE IF NOT EXISTS etl_weather_data (`date` STRING,day_of_week STRING,high_temperature INT,low_temperature INT,weather STRING,wind_direction STRING,wind_speed STRING,city STRING
);-- 插入数据到etl_weather_data表
INSERT INTO TABLE etl_weather_data
SELECTSUBSTR(`date`, 1, INSTR(`date`, ' ') - 1) AS `date`,SUBSTR(`date`, INSTR(`date`, ' ') + 1) AS day_of_week,CAST(SUBSTR(high_temperature, 1, INSTR(high_temperature, '°') - 1) AS INT) AS high_temperature,CAST(SUBSTR(low_temperature, 1, INSTR(low_temperature, '°') - 1) AS INT) AS low_temperature,weather,REGEXP_REPLACE(SUBSTR(wind_direction, 1, INSTR(wind_direction, '级') - 1), '[0-9]', '') AS wind_direction,SUBSTR(SUBSTR(wind_direction, INSTR(wind_direction, '风') + 1),1,1) AS wind_speed,city
FROMweather_data;-- 1.统计一年中每个城市晴天个数的top10
CREATE TABLE IF NOT EXISTS top_sunny_cities (city STRING,sunny_days_count INT
);INSERT INTO TABLE top_sunny_cities
SELECTcity,COUNT(*) AS sunny_days_count
FROMetl_weather_data
WHEREweather LIKE '%晴%'
GROUP BYcity
ORDER BYsunny_days_count DESC
LIMIT 10;-- 2.统计北京一年中每个月的温差变化
CREATE TABLE IF NOT EXISTS monthly_max_temperature_difference (month_year STRING,max_temperature_difference INT
);INSERT INTO TABLE monthly_max_temperature_difference
SELECTCONCAT(YEAR(`date`), '-', LPAD(MONTH(`date`), 2, '0')) AS month_year,MAX(high_temperature - low_temperature) AS max_temperature_difference
FROMetl_weather_data
WHEREcity = '北京'
GROUP BYYEAR(`date`), MONTH(`date`);-- 3.统计城市出现3级以上风速最多的10个城市
CREATE TABLE IF NOT EXISTS top_cities_high_wind (city STRING,high_wind_days_count INT
);INSERT INTO TABLE top_cities_high_wind
SELECTcity,COUNT(*) AS high_wind_days_count
FROMetl_weather_data
WHERECAST(wind_speed AS INT) >= 3
GROUP BYcity
ORDER BYhigh_wind_days_count DESC
LIMIT 10;

基于sqoop将数据导入到mysql中

sqoop export \--connect jdbc:mysql://192.168.138.1:3306/big_data \--username root --password '123456' \--table top_sunny_cities_sqoop \--export-dir /hive/warehouse/big_data.db/big_data.dbbig_data.db/top_sunny_cities \--input-fields-terminated-by '\001' \--input-lines-terminated-by '\n';sqoop export \--connect jdbc:mysql:// 192.168.138.1:3306/big_data \--username root --password 123456 \--table monthly_max_temperature_difference \--export-dir /user/hive/warehouse/big_data.db/big_data.dbmonthly_max_temperature_difference \--input-fields-terminated-by '\001' \--input-lines-terminated-by '\n'sqoop export \--connect jdbc:mysql:// 192.168.138.1:3306/big_data \--username root --password 123456 \--table top_cities_high_wind \--export-dir /user/hive/warehouse/big_data.db/big_data.dbtop_cities_high_wind \--input-fields-terminated-by '\001' \--input-lines-terminated-by '\n'

在这里插入图片描述

基于mysql数据使用Django做数据可视化

from django.contrib.auth.decorators import login_required
from django.http import HttpResponse
from django.shortcuts import render, redirect
from django.shortcuts import render
from pyecharts import options as opts
from pyecharts.charts import Line, Bar, Pie, Grid
# Create your views here.from django.shortcuts import render
from pyecharts.globals import ThemeTypefrom api.service.task_service import get_user, top_sunny_cities, monthly_max_temperature_difference, \top_cities_high_wind, top_rainy_cities, monthly_rainy_days, yearly_min_temperatures, daily_wind_speed, \daily_temperature_difference, register_userdef login_page(request):if request.method == 'POST':username = request.POST.get('username')password = request.POST.get('password')user = get_user(username,password)if user is not None:return redirect('home')else:return render(request, 'login.html', {'error_message': 'Invalid login credentials.'})return render(request, 'login.html')def register_view(request):# 处理注册逻辑if request.method == 'GET':username = request.GET.get('username')password = request.GET.get('password')if username and password:register_user(username,password)return HttpResponse("注册成功!")return render(request, 'register.html')  # 使用你的注册模板路径def home(request):print(2)return render(request, 'home.html')def data_analysis(request, button_id):return render(request, 'data_analysis.html', {'button_id': button_id})def data_analysis(request, button_id):# 根据按钮 ID 进行不同的处理if button_id == 1:x,y = top_sunny_cities()line_chart = (Line().add_xaxis(xaxis_data=x).add_yaxis(series_name="晴天个数", y_axis=y).set_global_opts(title_opts=opts.TitleOpts(title="一年中每个城市晴天个数的top10")))chart_html = line_chart.render_embed()button_name = "折线图"elif button_id == 2:x,y = monthly_max_temperature_difference()line_chart = (Line().add_xaxis(xaxis_data=x).add_yaxis(series_name="温差值", y_axis=y).set_global_opts(title_opts=opts.TitleOpts(title="北京一年中每个月的温差变化")))chart_html = line_chart.render_embed()button_name = "折线图"elif button_id == 3:x,y = top_cities_high_wind()bar_chart = (Bar().add_xaxis(xaxis_data=x).add_yaxis(series_name="3级风速次数",y_axis=y).set_global_opts(title_opts=opts.TitleOpts(title="出现3级以上风速的top10个城市")))chart_html = bar_chart.render_embed()button_name = "条形图"elif button_id == 4:x, y = top_rainy_cities()bar_chart = (Bar().add_xaxis(xaxis_data=x).add_yaxis(series_name="雨天数量", y_axis=y).set_global_opts(title_opts=opts.TitleOpts(title="多雨城市的top10")))chart_html = bar_chart.render_embed()button_name = "条形图"elif button_id == 5:x, y = monthly_rainy_days()pie = Pie()pie.add("", list(zip(x, y)))pie.set_global_opts(title_opts={"text": "杭州每月雨天变化", "subtext": "2022年"},legend_opts=opts.LegendOpts(orient="vertical", pos_right="right", pos_top="center"))chart_html = pie.render_embed()button_name = "饼图"elif button_id == 6:x, y = yearly_min_temperatures()line_chart = (Line().add_xaxis(xaxis_data=x).add_yaxis(series_name="温度", y_axis=y).set_global_opts(title_opts=opts.TitleOpts(title="城市一年中最低的温度top10")))chart_html = line_chart.render_embed()button_name = "折线图"elif button_id == 7:x,y=daily_temperature_difference()# 创建饼图pie = (Pie(init_opts=opts.InitOpts(width="800px", height="600px")).add(series_name="南京10月份1~10号温差变化",data_pair=list(zip(x, y)),radius=["40%", "75%"],  # 设置内外半径,实现空心效果label_opts=opts.LabelOpts(is_show=True, position="inside"),).set_global_opts(title_opts=opts.TitleOpts(title="南京10月份1~10号温差变化"),legend_opts=opts.LegendOpts(orient="vertical", pos_right="right", pos_top="center"),).set_series_opts(  # 设置系列选项,调整 is_show 阈值label_opts=opts.LabelOpts(is_show=True)))chart_html = pie.render_embed()button_name = "饼图"elif button_id == 8:x,y=daily_wind_speed()bar_chart = (Bar().add_xaxis(xaxis_data=x).add_yaxis(series_name="风速级别", y_axis=y).set_global_opts(title_opts=opts.TitleOpts(title="南京10月份每天的风速变化")))chart_html = bar_chart.render_embed()button_name = "条形图"return render(request, 'data_analysis.html', {'chart_html': chart_html, 'button_name': button_name})

展示Django项目运行结果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如有遇到问题可以找小编沟通交流哦。另外小编帮忙辅导大课作业,学生毕设等。不限于python,java,大数据等。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/290367.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

让IIS支持.NET Web Api PUT和DELETE请求

前言 有很长一段时间没有使用过IIS来托管应用了,今天用IIS来托管一个比较老的.NET Fx4.6的项目。发布到线上后居然一直调用不同本地却一直是正常的,关键是POST和GET请求都是正常的,只有PUT和DELETE请求是有问题的。经过一番思考忽然想起来了I…

Spring Cloud+Spring Alibaba笔记

Spring CloudSpring Alibaba 文章目录 Spring CloudSpring AlibabaNacos服务发现配置中心 OpenFeign超时机制开启httpclient5重试机制开启日志 SeataSentinel流量控制熔断降级热点控制规则持久化集成 OpenFeign集成 Gateway MicrometerZipKinGateway路由断言过滤器 Nacos 服务…

Spring用到了哪些设计模式?

目录 Spring 框架中⽤到了哪些设计模式?工厂模式单例模式1.饿汉式,线程安全2.懒汉式,线程不安全3.懒汉式,线程安全4.双重检查锁(DCL, 即 double-checked locking)5.静态内部类6.枚举单例 代理模…

C++超市商品管理系统

一、简要介绍 1.本项目为面向对象程序设计的大作业,基于Qt creator进行开发,Qt框架版本6.4.1,编译环境MINGW 11.2.0。 2.项目结构简介:关于系统逻辑部分的代码的头文件在head文件夹中,源文件在s文件夹中。与图形界面…

算法---动态规划练习-6(地下城游戏)

地下城游戏 1. 题目解析2. 讲解算法原理3. 编写代码 1. 题目解析 题目地址:点这里 2. 讲解算法原理 首先,定义一个二维数组 dp,其中 dp[i][j] 表示从位置 (i, j) 开始到达终点时的最低健康点数。 初始化数组 dp 的边界条件: 对…

基于Echarts的超市销售可视化分析系统(数据+程序+论文)

本论文旨在研究Python技术和ECharts可视化技术在超市销售数据分析系统中的应用。本系统通过对超市销售数据进行分析和可视化展示,帮助决策层更好地了解销售情况和趋势,进而做出更有针对性的决策。本系统主要包括数据处理、数据可视化和系统测试三个模块。…

【前端】Web API

1.Web API 简介 JS分为三大部分: ESCMScript:基础语法部分DOM API:操作页面结构BOM API:操作浏览器 Web API包含 DOM BOM 2.DOM基本概念 DOM全称 Document Object Mod…

【JAVAEE学习】探究Java中多线程的使用和重点及考点

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…

IDEA2021.1.2破解无限试用30天破解IDEA

安装包下载 IDEA安装包:Other Versions - IntelliJ IDEA破解包下载:文件 密码:c033 开始激活 IDEA 2021.1.3 运行, 中间会先弹出一个注册框,我们勾选 Evaluate for free, 点击 Evaluate, 先试用30天: 注意,如果没有…

vue3封装Element表格自适应

表格高度自适应 分页跟随表格之后 1. 满屏时出现滚动条 2. 不满屏时不显示滚动条 坑 表格设置maxHeight后不出现滚动条 解决方案 表格外层元素设置max-height el-table–fit 设置高度100% .table-box {max-height: calc(100% - 120px); } .el-table--fit {height: 100%; }示例代…

李宏毅【生成式AI导论 2024】第6讲 大型语言模型修炼_第一阶段_ 自我学习累积实力

背景知识:机器怎么学会做文字接龙 详见:https://blog.csdn.net/qq_26557761/article/details/136986922?spm=1001.2014.3001.5501 在语言模型的修炼中,我们需要训练资料来找出数十亿个未知参数,这个过程叫做训练或学习。找到参数后,我们可以使用函数来进行文字接龙,拿…

Acer宏碁暗影骑士擎AN515-58笔记本电脑工厂模式原厂Win11系统ISO镜像安装包下载

宏基AN515-58原装出厂OEM预装Windows11系统工厂包,恢复出厂时开箱状态一模一样,带恢复还原功能 链接:https://pan.baidu.com/s/1iCVSYtList-hPqbyTyaRqQ?pwdt2gw 提取码:t2gw 宏基原装系统自带所有驱动、NITROSENSE风扇键盘灯…

基于TensorFlow的花卉识别(算能杯)%%%

Anaconda Prompt 激活 TensorFlow CPU版本 conda activate tensorflow_cpu //配合PyCharm环境 直接使用TensorFlow1.数据分析 此次设计的主题为花卉识别,数据为TensorFlow的官方数据集flower_photos,包括5种花卉(雏菊、蒲公英、玫瑰、向日葵…

Python拆分PDF、Python合并PDF

WPS能拆分合并&#xff0c;但却是要输入编辑密码&#xff0c;我没有。故写了个脚本来做拆分&#xff0c;顺便附上合并的代码。 代码如下&#xff08;extract.py) #!/usr/bin/env python """PDF拆分脚本(需要Python3.10)Usage::$ python extract.py <pdf-fil…

以XX医院为例的医疗建筑能效管理系统【建筑能耗 供电可靠 】

一、行业背景 二、行业特点 1.供电可靠性要求高&#xff1a;医院配电系统复杂&#xff0c;门诊、急救、手术室、ICU/CCU、血液透析等场合特一级和一级负荷比较多&#xff0c;一旦发生故障会造成严重影响&#xff0c;对配电可靠性要求极高。 2.能耗水平高&#xff1a;医院能耗…

2024 蓝桥打卡Day25

CCFCSP算法练习 202305-1 重复局面 202305-2 矩阵运算 202303-1 田地丈量 202303-2 垦田计划

GEE教程——如何将一个指定区域的矢量信息添加到矢量中

问题来源 1 - 将光栅文件转换为矢量文件; 2 - 复制用于切割光栅的矢量/多边形的属性,并将其添加到转换后生成的每个多边形中。 这里的主要问题是我们对一个区域进行筛选和后续运算的时候,需要将其研究区的属性进行复制,传递给后续栅格转化矢量后的数据中。下面就是我们矢…

由浅到深认识Java语言(25):正则表达式

该文章Github地址&#xff1a;https://github.com/AntonyCheng/java-notes 在此介绍一下作者开源的SpringBoot项目初始化模板&#xff08;Github仓库地址&#xff1a;https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址&#xff1a;https://blog.c…

LabVIEW智能降噪系统

LabVIEW智能降噪系统 随着噪声污染问题的日益严重&#xff0c;寻找有效的降噪技术变得尤为关键。介绍了一种基于LabVIEW平台开发的智能降噪系统&#xff0c;该系统能够实时采集环境噪声&#xff0c;并通过先进的信号处理技术实现主动降噪&#xff0c;从而有效改善生活和工作环…

PHP开发全新29网课交单平台源码修复全开源版本,支持聚合登陆易支付

这是一套最新版本的PHP开发的网课交单平台源代码&#xff0c;已进行全开源修复&#xff0c;支持聚合登录和易支付功能。 项目 地 址 &#xff1a; runruncode.com/php/19721.html 以下是对该套代码的主要更新和修复&#xff1a; 1. 移除了论文编辑功能。 2. 移除了强国接码…