数据洞察:从零到一的数据仓库与Navicat连接全攻略【实训Day04】[完结篇]

一、数据分析

1 实现数据仓库(在hadoop101上)

1) 创建jobdata数据库

# cd $HIVE_HOME 
# bin/hive 
hive>create database jobdata;
hive>use jobdata;

2) 创建原始职位数据事实表ods_jobdata_orgin(在hadoop101上)

create table ods_jobdata_origin(
city string COMMENT '城市',
salary array<String> COMMENT '薪资',
company array<String> COMMENT '福利',
kill array<String> COMMENT '技能')
COMMENT '原始职位数据表'
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ',' 
COLLECTION ITEMS TERMINATED BY '-' 
STORED AS TEXTFILE;

3) 将HDFS上预处理的数据导入到ods_jobdata_orgin(在hadoop101上)

hive>load data inpath '/JobData/output/part-r-00000' overwrite into table ods_jobdata_origin ;hive>select * from ods_jobdata_origin;

4) 创建职位数据明细表 ods_jobdata_detail(在hadoop101上)

hive>create table ods_jobdata_detail(city string COMMENT '城市',salary array<String> COMMENT '薪资',company array<String> COMMENT '福利',kill array<String> COMMENT '技能',low_salary int COMMENT '低薪资',high_salary int COMMENT '高薪资',avg_salary double COMMENT '平均薪资')COMMENT '职位数据明细表'ROW FORMAT DELIMITEDFIELDS TERMINATED BY ','STORED AS TEXTFILE;

5) 向职位数据明细表导入数据

hive>insert overwrite table ods_jobdata_detailselectcity,salary,company,kill,salary[0],salary[1],(salary[0]+salary[1])/2from ods_jobdata_origin;

6) 创建临时表t_ods_tmp_salary(在hadoop101上)

hive>create table t_ods_tmp_salary asselect explode(ojo.salary) fromods_jobdata_origin ojo;

7) 创建工资处理表 t_ods_tmp_salary_dist(在hadoop101上)

hive>create table t_ods_tmp_salary_dist asselect case when col>=0 and col<=5 then '0-5'when col>=6 and col<=10 then '6-10'when col>=11 and col<=15 then '11-15'when col>=16 and col<=20 then '16-20'when col>=21 and col<=25 then '21-25'when col>=26 and col<=30 then '26-30'when col>=31 and col<=35 then '31-35'when col>=36 and col<=40 then '36-40'when col>=41 and col<=45 then '41-45'when col>=46 and col<=50 then '46-50'when col>=51 and col<=55 then '51-55'when col>=56 and col<=60 then '56-60'when col>=61 and col<=65 then '61-65'when col>=66 and col<=70 then '66-70'when col>=71 and col<=75 then '71-75'when col>=76 and col<=80 then '76-80'when col>=81 and col<=85 then '81-85'when col>=86 and col<=90 then '86-90'when col>=91 and col<=95 then '91-95'when col>=96 and col<=100 then '96-100'when col>=101 then '>101' end fromt_ods_tmp_salary;

8) 创建福利标签临时表t_ods_tmp_company(在hadoop101上)

hive>create table t_ods_tmp_company asselect explode(ojo.company)from ods_jobdata_origin ojo;

9) 创建技能标签临时表t_ods_tmp_kill(在hadoop101上)

hive>create table t_ods_tmp_kill asselect explode(ojo.kill)from ods_jobdata_origin ojo;

10) 创建技能维度表t_ods_kill(在hadoop101上)

hive>create table t_ods_kill(every_kill String comment '技能标签',count int comment '词频')COMMENT '技能标签词频统计'ROW FORMAT DELIMITEDfields terminated by ','STORED AS TEXTFILE;

11)创建福利维度表t_ods_company(在hadoop101上)

hive>create table t_ods_company(every_company String comment '福利标签',count int comment '词频')COMMENT '福利标签词频统计'ROW FORMAT DELIMITEDfields terminated by ','STORED AS TEXTFILE;

12)创建城市维度表t_ods_city(在hadoop101上)

hive>create table t_ods_city(every_city String comment '城市',count int comment '词频')COMMENT '城市统计'ROW FORMAT DELIMITEDfields terminated by ','STORED AS TEXTFILE;

13) 职位区域分析

hive>insert overwrite table t_ods_cityselect city,count(1)from ods_jobdata_origin group by city;hive>select *  from t_ods_city sort by count desc;

14) 创建薪资维度表

hive>create table t_ods_salary(every_partition String comment '薪资分布',count int comment '聚合统计')COMMENT '薪资分布聚合统计'ROW FORMAT DELIMITEDfields terminated by ','STORED AS TEXTFILE;

15) 职位薪资分析(全国薪资分布情况)

hive>insert overwrite table t_ods_salaryselect `_c0`,count(1)from t_ods_tmp_salary_dist group by `_c0`;hive>select * from t_ods_salary sort by count desc;

16) 职位薪资分析(薪资的平均值、中位数和众数)

hive>select avg(avg_salary) from ods_jobdata_detail;hive>select avg_salary,count(1) as cnt from ods_jobdata_detail group by avg_salary order by cnt desc limit 1;hive>select percentile(cast(avg_salary as BIGINT),0.5) from ods_jobdata_detail;

17) 职位薪资分析(各城市平均薪资待遇)

hive>select city,count(city),round(avg(avg_salary),2) as cntfrom ods_jobdata_detailgroup by city order by cnt desc;

18) 公司福利分析

hive>insert overwrite table t_ods_companyselect col,count(1)from t_ods_tmp_company group by col;hive>select every_company,countfrom t_ods_companysort by count desc limit 10;

systemctl status mysqld.service 查看状态

二、连接navicat

           

1.建表

create table t_city_count(
city varchar(30) DEFAULT NULL,
count int(5) DEFAULT NULL)
ENGINE=InnoDB DEFAULT CHARSET=utf8;
create table t_salary_dist(
salary varchar(30) DEFAULT NULL,
count int(5) DEFAULT NULL)
ENGINE=InnoDB DEFAULT CHARSET=utf8;
create table t_company_count(
company varchar(30) DEFAULT NULL,
count int(5) DEFAULT NULL)
ENGINE=InnoDB DEFAULT CHARSET=utf8;
create table t_kill_count(
kills varchar(30) DEFAULT NULL,
count int(5) DEFAULT NULL)
ENGINE=InnoDB DEFAULT CHARSET=utf8;

2.启动sqoop传输文件,把hive数据库传输到mysql数据库

bin/sqoop export \
--connect jdbc:mysql://hadoop101:3306/JobData?characterEncoding=UTF-8 \
--username root \
--password 123456 \
--table t_city_count \
--columns "city,count" \
--fields-terminated-by ',' \
--export-dir /user/hive/warehouse/jobdata.db/t_ods_city;

在这个目录下执行上面的命令

bin/sqoop export \
--connect jdbc:mysql://hadoop101:3306/JobData?characterEncoding=UTF-8 \
--username root \
--password 123456 \
--table t_salary_dist \
--columns "salary,count" \
--fields-terminated-by ',' \
--export-dir /user/hive/warehouse/jobdata.db/t_ods_salary;
bin/sqoop export \
--connect jdbc:mysql://hadoop101:3306/JobData?characterEncoding=UTF-8 \
--username root \
--password 123456 \
--table t_company_count \
--columns "company,count" \
--fields-terminated-by ',' \
--export-dir /user/hive/warehouse/jobdata.db/t_ods_company;

bin/sqoop export \
--connect jdbc:mysql://hadoop101:3306/JobData?characterEncoding=UTF-8 \
--username root \
--password 123456 \
--table t_kill_count \
--columns "kills,count" \
--fields-terminated-by ',' \
--export-dir /user/hive/warehouse/jobdata.db/t_ods_kill;

3.添加依赖

pom.xml添加内容

<dependencies><!--1.阿里云json处理jar包--><dependency><groupId>org.codehaus.jettison</groupId><artifactId>jettison</artifactId><version>1.5.4</version></dependency><!--2.spring-context--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.5.RELEASE</version></dependency><!--3.spring-beans--><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>5.2.5.RELEASE</version></dependency><!--4.spring-webmvc 网站设计--><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.2.5.RELEASE</version></dependency><!--5.spring-jdbc连接数据库--><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.2.5.RELEASE</version></dependency><!--6.spring-aspects是AOP切面编程--><dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId><version>5.2.5.RELEASE</version></dependency><!--7.spring-jms异步消息通信--><dependency><groupId>org.springframework</groupId><artifactId>spring-jms</artifactId><version>5.2.5.RELEASE</version></dependency><!--8.spring-context-support框架扩展模块--><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>5.2.5.RELEASE</version></dependency><!--9.mybatis框架--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.1</version></dependency><!--10.mybatis-spring--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.3.1</version></dependency><!--11.mybatis分页插件--><dependency><groupId>com.github.miemiedev</groupId><artifactId>mybatis-paginator</artifactId><version>1.2.15</version></dependency><!--12.mysql驱动模块--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.9</version></dependency><!--13.阿里巴巴数据库连接池--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.16</version><exclusions><exclusion><groupId>com.alibaba</groupId><artifactId>jconsole</artifactId></exclusion><exclusion><groupId>com.alibaba</groupId><artifactId>tools</artifactId></exclusion></exclusions></dependency><!--14.jsp的标准标签库--><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><!--15.servlet的标准API--><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version></dependency><!--16.jsp的标准API--><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.1</version></dependency><!--17.测试包--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><!--18.处理JSON数据类型--><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.10.1</version></dependency><!--19.面向切面编程的功能模块--><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.9.22</version></dependency></dependencies>
<build><finalName>JobData-Web</finalName><!--资源搜索设置--><resources><!--1.搜索java文件夹中类型--><resource><directory>src/main/java</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>false</filtering></resource><!--2.搜索resources文件夹的类型--><resource><directory>src/main/resources</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes></resource></resources><!--插件管理--><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.1</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin></plugins></build>

4.db.properties添加内容

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://hadoop101:3306/JobData?characterEncoding=utf8
jdbc.username=root
jdbc.password=123456

5.echarts-view.js添加内容

6.下载tomcata

将其放在根盘符下,解压缩tomcat到其目录E:\apache-tomcat-8.5.61

7.重启tomcat

删除上方红框内容

8.查看报错内容

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'cityServiceImpl': Unsatisfied dependency expressed through field 'mapper'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'cn.aust.mapper.CityMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

出现该问题解决方案

最终效果展示:


Day04:完结~

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

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

相关文章

Keepalived+LVS实现负责均衡,高可用的集群

Keepalived的设计目标是构建高可用的LVS负载均衡群集&#xff0c;可以调用ipvsadm工具来创建虚拟服务器&#xff0c;管理服务器池&#xff0c;而不仅仅用作双机热备。使用Keepalived构建LVS群集更加简便易用&#xff0c;主要优势体现在&#xff1a;对LVS负责调度器实现热备切换…

配置并调试后端程序(sql)

1.环境准备 安装VS Code和Node.js插件&#xff1a;确保你已经安装了VS Code和Node.js插件。创建launch.json文件&#xff1a;在你的项目中创建一个.vscode文件夹&#xff0c;并在其中创建launch.json文件。添加以下内容&#xff1a; {"version": "0.2.0"…

uniapp 数据父传子

文章目录 可能出现的问题 在uni-app中&#xff0c;父组件向子组件传递数据主要通过属性绑定的方式实现。这里提供一个简单的示例来说明如何进行父传子的数据传递&#xff1a; 父组件 准备数据: 在父组件的data中定义要传递的数据。 export default {data() {return {parentMe…

PLC基础知识

1.PLC中的数据寄存器地址D表示存数据的地方。 2.PLC的物理存储器的规定&#xff1a;PLC存储器以字节为单位&#xff08;Byte&#xff09;&#xff0c;存储单元以位&#xff08;Bit&#xff09;、字节&#xff08;B&#xff0c;8Bit&#xff09;、字&#xff08;W&#xff0c;1…

电子行业MES系统解决方案

工业4.0时代的工业自动化&#xff0c;将在原有自动化技术和架构下&#xff0c;实现集中式控制向分散式增强型控制的基本模式转变&#xff0c;让设备从传感器到因特网的通讯能够无缝对接&#xff0c;从而建立一个高度灵活的、个性化和数字化、融合了产品与服务的生产模式。在这种…

spark shuffle写操作——BypassMergeSortShuffleWriter

创建分区文件writer 每一个分区都生成一个临时文件&#xff0c;创建DiskBlockObjectWriter对象&#xff0c;放入partitionWriters 分区writer写入消息 遍历所有消息&#xff0c;每一条消息都使用分区器选择对应分区的writer然后写入 生成分区文件 将分区writer的数据flu…

从海上长城到数字防线:视频技术在海域边防现代化中的创新应用

随着全球化和科技发展的加速&#xff0c;海域安全问题日益凸显其重要性。海域边防作为国家安全的第一道防线&#xff0c;其监控和管理面临着诸多挑战。近年来&#xff0c;视频技术的快速发展为海域边防场景提供了新的解决方案&#xff0c;其高效、实时、远程的监控特点极大地提…

如何快速开展每日待办工作 待办任务高效管理

每天&#xff0c;我们都需要处理大量的待办工作&#xff0c;如何高效有序地开展这些工作成为了我们必须要面对的问题。仅仅依靠个人的记忆和脑力去管理这些繁杂的事务&#xff0c;显然是一项艰巨的挑战。在这个时候&#xff0c;如果能有一款实用的待办工具来辅助我们&#xff0…

如何使用C++调用Pytorch模型进行推理测试:使用libtorch库

如何使用C调用Pytorch模型进行推理测试&#xff1a;使用libtorch库 目录 如何使用C调用Pytorch模型进行推理测试&#xff1a;使用libtorch库一、环境准备1&#xff0c;linux&#xff1a;以ubuntu 22.04系统为例1. 准备CUDA和CUDNN2. 准备C环境3, 下载libtorch文件4, 编写测试li…

期权学习必看圣书:《3小时快学期权》要在哪里看?

今天带你了解期权学习必看圣书&#xff1a;《3小时快学期权》要在哪里看&#xff1f;《3小时快学期权》是一本关于股票期权基础知识的书籍。 它旨在通过简明、易懂的语言和实用的案例&#xff0c;让读者在短时间内掌握股票期权的基本概念、操作方法和投资策略。通过这本书&…

Linux系统(CentOS)安装Mysql5.7.x

安装准备&#xff1a; Linux系统(CentOS)添加防火墙、iptables的安装和配置 请访问地址&#xff1a;https://blog.csdn.net/esqabc/article/details/140209894 1&#xff0c;下载mysql安装文件&#xff08;mysql-5.7.44为例&#xff09; 选择Linux通用版本64位&#xff08;L…

算力互联网网络架构;SRV6;智享WAN

目录 算力互联网网络架构 SRV6 主要特点 应用场景 结论 G-SRV6 多层次网络切片 智享WAN 一、定义与背景 二、关键技术 三、应用场景与优势 四、发展现状与未来展望 智能算力网络成为智能经济时代代表性数字基础设施 算力互联网网络架构 为构建算力互联网这个前瞻性…

后端之路——阿里云OSS云存储

一、何为阿里云OSS 全名叫“阿里云对象存储OSS”&#xff0c;就是云存储&#xff0c;前端发文件到服务器&#xff0c;服务器不用再存到本地磁盘&#xff0c;可以直接传给“阿里云OSS”&#xff0c;存在网上。 二、怎么用 大体逻辑&#xff1a; 细分的话就是&#xff1a; 1、准…

JavaSE (Java基础):面向对象(下)

8.7 多态 什么是多态&#xff1f; 即同一方法可以根据发送对象的不同而采用多种不同的方式。 一个对象的实际类型是确定的&#xff0c;但可以指向对象的引用的类型有很多。在句话我是这样理解的&#xff1a; 在实例中使用方法都是根据他最开始将类实例化最左边的类型来定的&…

消息中间件ApacheKafka在windows简单安装

一.背景 之前公司需要API网关管理软件ApacheShenYu&#xff0c;我相信把调用的记录都存到一个数据库。他支持日志推送到kafka&#xff0c;所以&#xff0c;我准备尝试一下通过kafka接收调用的日志信息。第一步&#xff0c;当然是安装kafka了。 二.ApacheKafka的下载 打开下载…

【C++】 解决 C++ 语言报错:Memory Leak

文章目录 引言 内存泄漏&#xff08;Memory Leak&#xff09;是 C 编程中常见且严重的内存管理问题之一。当程序分配了内存而没有正确释放&#xff0c;导致内存无法被重新利用时&#xff0c;就会发生内存泄漏。这种错误会导致程序占用越来越多的内存&#xff0c;最终可能导致系…

论文学习——动态多目标优化的一种新的分位数引导的对偶预测策略

论文题目&#xff1a;A novel quantile-guided dual prediction strategies for dynamic multi-objective optimization 动态多目标优化的一种新的分位数引导的对偶预测策略&#xff08;Hao Sun a,b, Anran Cao a,b, Ziyu Hu a,b, Xiaxia Li a,b, Zhiwei Zhao c&#xff09;In…

“免费”的可视化大屏案例分享-智慧园区综合管理平台

一.智慧园区是什么&#xff1f; 智慧园区是一种融合了新一代信息与通信技术的先进园区发展理念。它通过迅捷信息采集、高速信息传输、高度集中计算、智能事务处理和无所不在的服务提供能力&#xff0c;实现了园区内及时、互动、整合的信息感知、传递和处理。这样的园区旨在提高…

正确使用Pytorch Geometric打开Cora(Planetoid)数据集

文章目录 关于报错&#xff08;"Cannot connect to host"&#xff09;解决方法 关于报错&#xff08;“Cannot connect to host”&#xff09; 我们在使用PyG调用Planetoid数据集的时候&#xff0c;常会碰到如下报错&#xff1a; 解决方法就是手动下载这个数据集。…

前端播放RTSP视频流,使用FLV请求RTSP视频流播放(Vue项目,在Vue中使用插件flv.js请求RTSP视频流播放)

简述&#xff1a;在浏览器中请求 RTSP 视频流并进行播放时&#xff0c;直接使用原生的浏览器 API 是行不通的&#xff0c;因为它们不支持 RTSP 协议。为了解决这个问题&#xff0c;开发者通常会选择使用像 flv.js 这样的库&#xff0c;它专为在浏览器中播放 FLV 和其他流媒体格…