IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 基于互联网的招聘信息统计与分析(作业) -> 正文阅读

[大数据]基于互联网的招聘信息统计与分析(作业)

实习要求:

  • ** 一、基于互联网的招聘信息统计与分析:**
    项目流程

    • 1.项目简介:
      • 该项目通过挖掘和分析互联网的招聘信息,并将进行数据统计与分析,把不同的岗位薪酬,相同岗位的不同待遇等方面进行对比。可以直观的感受岗位、薪资和就业前景,更加直观的展望行业的未来,把握就业的最新动态。
    • 2.数据来源:
      • Python爬取拉钩招聘网的关于python岗位的招聘信息。
    • 3.环境搭建
      • 我使用的是原有的教学中的node-01、node-02、node-03基础上克隆一台node-04作为可视化虚拟机
    • 4.数据预处理
      • 创建Maven项目,选择jar打包方式,编写MapReduce程序,执行数据预处理
    • 5.数据仓库
      • 从节点连接至hive服务端,创建名为lagou的数据仓库,创建表,导入数据
    • 6.数据分析
      • 通过hive将字段明细表继续查询
    • 7.数据导出
      • 运动sqoop将hive中的表数据导出到MySQL关系数据库中,方便可视化
    • 8.可视化
      • 将抽象的数据图形化,采用Echarts辅助实现

  • 二、搭建node-04搭建可视化节点

    • 1.克隆

    • 2.修改node-04配置
      • (1)修改node-04的ip

      • (2)修改node-04的主机名

      • (3)删除物理地址绑定文件

      • (4)重启查看

      • (5)ping外网

      • (6)修改虚拟机 /etc/hosts

      • (7)修改myid

      • (8)修改zoo.cfg

      • (9)查看集群效果

  • 三、获取数据python爬虫获取

    • 1.模拟浏览器爬取拉勾关于python的岗位信息
    • 2.爬取

  • 四、数据预处理 文件传输至hdfs,编写mr清洗数据

    ?

    • 1.rz导入表格

    • 2.flume上传

    • 3.flume启动

    • 3.flume采集日志
  • 五、存储数据到hive和hdfs
    hive

    • 1.安装hive

    • 2.解压hive

    • 3.重命名

    • 4.配置

    • 5.装载mysql驱动

    • 6.删除guava包

    • 7. ./schematool -dbType mysql -initSchema

      • 错误原因:hadoop和hive的两个guava.jar版本不一致
      • 解决办法:删除低版本的那个,将高版本的复制到低版本目录下
        • 再次运行,成功

    • 8.修改配置

    • 9.启动hive

    • 10.hive创建python_job表

      • 查看python_job表

    • 11.尝试hive内部导入 load data inpath "/export/Lagou.csv" into table lagou; 报错


      因为我们还没有往hdfs导入文件
    • 12.在完成六、七、八后已经可以解决这个问题,同时使用本地内存完成set hive.exec.mode.local.auto=true;再次尝试

      • 再次导入数据,成功。经过后面的修改,修改为lagou_data

  • 六、修改hdfs配置


  • 节点磁盘、内存全为0,因为多次格式化,需要修正

    • 1.搭建好平台后,使用hadoop fs -put向hadoop中上传文件时,报以下错误

      • 1.1查看jps发现能查到节点信息

      • 1.2使用hadoop dfsadmin -report命令查看磁盘使用情况,发现都是空的

    • 2.这个问题一般是由于使用hadoop namenode -format 格式化多次,导致spaceID不一致造成的,解决方法如下:
      • 2.1停止集群所有的服务。指令为:stop-all.sh
      • 2.2删除hdfs中配置的data目录下的所有文件(级core-site.xml中配置的hadoop.tmp.dir)。

      • 2.3重新格式化namenode。指令为:hadoop namenode -format

      • 2.4重新启动hadoop集群。指令为:start-all.sh 再使用hadoop dfsadmin -report查看

      • 成功,进行下一步。
  • 七、向hive导入数据
    将数据导入到hive中,便于下一步分析
    • 1.查看hive里的数据库

    • 2.查看hdfs,这里的lagou对应hive里面创建的lagou表

    • 3.导入数据,同时存在于dfs和hive

    • 4.从hive查看

    • 至此,hive存储数据已经完成了,接下来就可以将数据存放在mysql中了

  • 八、hive数据分析

  • 分析:“python开发工程师”,“python数据工程师”等岗位在北京、上海、深圳、程度的岗位数
    分析相关岗位学历的薪资水平,并做出条形图展示出来。由于爬取的工资是一个范围,并且是k表示,所以将“k”替换为“000”,并取中间值
    分析“python开发工程师”、“python工程师”、“Python后端”等岗位的平均工资、最高工资、最低工资,并作条形图将结果展示出来;
    • 1.要进行的分析:“python开发工程师”,“python数据工程师”等岗位在北京、上海、深圳、程度的岗位数
      • 1.1尝试直接用分析"python数据工程师",发生错误

      • 1.2查看错误,发现要开启yarn

      • 1.3再次分析,错误

        • 1.3.1尝试其他方法
      • 1.4 分析“python开发工程师”、“python工程师”、“Python数据工程师”"python后端"等大数据相关岗位在成都、北京、上海、广州、深圳的岗位数,并做饼图将结果展示出来。


        analysis_1:计算python开发工程师岗位数量
        analysis_2:计算python工程师岗位数量
        analysis_3:计算Python数据工程师岗位数量
        • 1.4.1计算python开发工程师岗位数量
          • 导入

          • ①发生错误,查看原因:namenode内存空间不够,jvm不够新job启动导致。解决方法:将hive可以设置成本地模式来执行任务试试:set hive.exec.mode.local.auto=true;

          • ②改为本地模式,再次启动,成功

          • ③继续分析北京、上海、广东、深圳

          • 查看

        • 1.4.2计算python工程师岗位数量
          • 导入

          • 查看

        • 1.4.3计算Python数据工程师岗位数量
          • 导入

          • 查看

          • 发现关于“数据工程师”的岗位为0???
          • 查看csv文件,发现确实没有相关岗位信息,换一个岗位“%python后端%”
        • 1.4.4计算python后端岗位数量
          • 导入

          • 查看,发现仍保留了数据开发的值

          • ①删除关于数据开发的结果

          • ②再次insert

          • 查看

    • 2.分析相关岗位学历的薪资水平,并做出条形图展示出来。由于爬取的工资是一个范围,并且是k表示,所以将“k”替换为“000”,并取中间值
      • 2.1重新导入数据

      • 2.3在hdfs和hive创建表

      • 2.4上传数据

      • 2.5查看,这一次薪酬输出的是int,可以进行下一步的分析

      • 2.6创建表education,存储工作名称,薪资,学历要求

        • 重命名为edu

      • 2.7创建表edu_money,用来存储平均、最高、最低工资

      • 2.8将学历分为“本科”“大专”“不限”,求平均、最大、最小薪资

        • 查看


          ?
    • 3.分析“python开发工程师”、“python工程师”、“Python后端”等岗位的平均工资、最高工资、最低工资,并作条形图将结果展示出来;
      • 3.1新建一个的表,名字随便取,我这儿就取的是job_salary,创建四个字段,分别用来存储工作名称,最高,最低,平均工资

      • 3.2再创建一个过度表,名字取caiji,用来装名称,薪资,地点三个数据

      • 3.3然后就向job_salary表插入数据

        • 查看数据

        • 经过调整,如下。显示出三种岗位薪资的平均值,最小值和最大值

    • 4.导出数据到hdfs中
      • 查看数据

      • 4.1python开发工程师饼图

      • 4.2python工程师饼图

      • 4.3python数据工程师饼图

      • 4.4学历

      • 4.5三个职业薪资水平

    • 5.用sqoop将数据存储到mysql中
      • 5.1 通过sqoop查看mysql所有数据库和表,可以发现mysql下的表为空。我们要将python_job python_houduan python_shuju python_kaifa job_salary edu_money导入到mysql

  • 十、数据导出
    用sqoop将数据存储到mysql
    • 1.导入三种岗位在不同地域的岗位数量:python_kaifa python_shuju python_houduan,首先要在mysql中创建相同数据类型的表。

    • 2.尝试导入:先将hive中的python_job导入mysql表中的lagou_data 出现错误

      • 2.1解决:在命令行输入:hadoop classpath

      • 2.2 把上述输出的值添加到yarn-site.xml文件对应的属性 yarn.application.classpath下面

      • 2.3重启yarn,关闭防火墙,再次导入mysql。出现错误:缺少jar包

      • 2.4进入/tmp/sqoop-root/compile下查看

        • ①选择第一个进入,复制lagou_data.jar到sqoop/bin目录下

        • ②运行,出现错误

        • ③查询,修改hosts,并且使用主机名

      • 2.5再次运行,发现map已经跑完了还报错。说明是mysql有问题,可能是mysql创建对应表的字段的长度不够。换一个表:python开发工程师python_kaifa后再次运行。成功 从mysql查看与hive数据一致但是没有jobNumber,需要修改编码格式再导入

      • 2.6删除mysql中的表修改mysql端的库和表的格式
        • 2.6.1删除表和库

        • 2.6.2再次创建python_kaifa

        • 2.6.3先查看lagou库的格式,如果不是utf8则修改


          SHOW CREATE DATABASE lagou;
        • 2.6.4可以发现lagou库的格式为latin1,修改其格式


          ALTER DATABASE lagou DEFAULT CHARACTER SET utf8;
        • 2.6.5查看库中的表的编码格式,不是则修改为utf8


          SHOW CREATE TABLE lagou.python_kaifa;
        • 2.6.6同样将其修改为utf8


          ALTER TABLE lagou.python_kaifa CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
        • 2.6.7创建其他表,发现全部随lagou库变为utf8

      • 2.7 同上,将其他数据导入MySQL
        • ①python后端python_houduan,在mysql中查看


          sqoop export --connect "jdbc:mysql://127.0.0.1:3306/lagou?useUnicode=true&characterEncoding=utf-8" --username root --password Lyh123456! --table python_houduan --export-dir /user/hive/warehouse/lagou.db/python_houduan --input-fields-terminated-by '\001'
        • ②python工程师python_shuju,在mysql中查看


          sqoop export --connect "jdbc:mysql://127.0.0.1:3306/lagou?useUnicode=true&characterEncoding=utf-8" --username root --password Lyh123456! --table python_shuju --export-dir /user/hive/warehouse/lagou.db/python_shuju --input-fields-terminated-by '\001'
        • ③创建学历与薪资的关系表 edu_money并导入数据,并在mysql中查看


          sqoop export --connect "jdbc:mysql://127.0.0.1:3306/lagou?useUnicode=true&characterEncoding=utf-8" --username root --password Lyh123456! --table edu_money --export-dir /user/hive/warehouse/lagou.db/edu_money --input-fields-terminated-by '\001'
        • ④创建岗位工资的平均最大最小的表job_salary,在mysql中查看


          sqoop export --connect "jdbc:mysql://127.0.0.1:3306/lagou?useUnicode=true&characterEncoding=utf-8" --username root --password Lyh123456! --table job_salary --export-dir /user/hive/warehouse/lagou.db/job_salary --input-fields-terminated-by '\001'
        • ⑤导入python_kaifa,在mysql中查看,没有乱码,显示完整


          sqoop export --connect "jdbc:mysql://127.0.0.1:3306/lagou?useUnicode=true&characterEncoding=utf-8" --username root --password Lyh123456! --table python_kaifa --export-dir /user/hive/warehouse/lagou.db/python_kaifa --input-fields-terminated-by '\001'
  • 十一、可视化
    利用pymysql和pyecharts实现数据可视化
    • 1.mysql授权


      GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Lyh123456!' WITH GRANT OPTION;
      • 1.1mysql-front可以查看数据,代表mysql可以被连接
      • 1.2python通过pymysql连接mysql表
    • 2地区岗位数
      • 1.1python开发工程师 后面的表格可视化只需要修改sql = "select * from 表格名称"即可


        import pymysql
        from pyecharts.charts import Pie
        from pyecharts import options as opts
        db = pymysql.connect(host="192.168.137.140",port=3306,database="lagou",user='root',password='Lyh123456!')
        cursor = db.cursor()
        sql = "select * from python_shuju"cursor.execute(sql)
        data = cursor.fetchall()
        print(data)
        addr = ['北京','上海','深圳','成都','广东']
        num = [data[0][1],data[1][1],data[2][1],data[3][1],data[4][1]]
        data_pair = [list(z) for z in zip(addr, num)]
        data_pair.sort(key=lambda x: x[1])
        # 画饼图c = (
        Pie()
        .add("", [list(z) for z in zip(addr,num)])
        .set_global_opts(title_opts=opts.TitleOpts(title="python工程师地区岗位分布",subtitle='单位:个数'),toolbox_opts=opts.ToolboxOpts())
        .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
        ).render("python工程师地区岗位分布.html")
        ?
      • 1.2python工程师

      • 1.3python后端

    • 3学历与薪资


      import pymysql
      from pyecharts.charts import Bar
      from pyecharts import options as opts
      db = pymysql.connect(host="192.168.137.140",port=3306,database="lagou",user='root',password='Lyh123456!')
      cursor = db.cursor()
      sql = "select * from edu_money"cursor.execute(sql)
      data = cursor.fetchall()
      print(data)
      zhiwei = [data[0][0],data[1][0],data[2][0]]
      print(zhiwei)
      min_list = [data[0][2],data[1][2],data[2][2]]
      max_list = [data[0][3],data[1][3],data[2][3]]
      average_list = [data[0][1],data[1][1],data[2][1]]
      bar = Bar()
      bar.add_xaxis(xaxis_data=zhiwei)
      # 第一个参数是图例名称,第二个参数是y轴数据bar.add_yaxis(series_name="最低工资", y_axis=min_list)
      bar.add_yaxis(series_name="最高工资", y_axis=max_list)
      bar.add_yaxis(series_name="平均工资", y_axis=average_list)
      # 设置表的名称bar.set_global_opts(title_opts=opts.TitleOpts(title='学历', subtitle='工资单位:元/月'), toolbox_opts=opts.ToolboxOpts(), )
      bar.render("学历与薪资.html")
    • 4不同岗位薪资图


      import pymysql
      from pyecharts.charts import Bar
      from pyecharts import options as opts
      db = pymysql.connect(host="192.168.137.140",port=3306,database="lagou",user='root',password='Lyh123456!')
      cursor = db.cursor()
      sql = "select * from job_salary"cursor.execute(sql)
      data = cursor.fetchall()
      # print(data)zhiwei = [data[0][0], data[1][0], data[2][0]]
      print(zhiwei)
      min_list = [data[0][2], data[1][2], data[2][2]]
      max_list = [data[0][3], data[1][3], data[2][3]]
      average_list = [data[0][1], data[1][1], data[2][1]]
      print(min_list)
      print(max_list)
      print(average_list)
      bar = Bar()
      bar.add_xaxis(xaxis_data=zhiwei)
      # 第一个参数是图例名称,第二个参数是y轴数据bar.add_yaxis(series_name="最低工资", y_axis=min_list)
      bar.add_yaxis(series_name="最高工资", y_axis=max_list)
      bar.add_yaxis(series_name="平均工资", y_axis=average_list)
      # 设置表的名称bar.set_global_opts(title_opts=opts.TitleOpts(title='薪资水平图', subtitle='工资单位:元/月'), toolbox_opts=opts.ToolboxOpts(), )
      bar.render("薪资水平图.html")

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-10-09 16:21:04  更:2021-10-09 16:23:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:58:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码