基于Hive的招聘网站的大数据分析系统

简介: 基于Hive的招聘网站的大数据分析系统

1. 数据采集

首先,我们需要通过网络爬虫技术从招聘网站上获取数据。爬虫可以自动地访问网站并抓取所需的数据,例如职位信息、公司信息、薪资水平等。在选择爬虫工具时,需要考虑目标网站的结构和反爬虫机制,确保能够稳定高效地获取数据。

import csv
import time

import requests
import execjs

from storage.csv2mysql import sync_data2db


def read_js_code():
    f= open('/Users/shareit/workspace/chart_show/demo.js',encoding='utf-8')
    txt = f.read()
    js_code = execjs.compile(txt)
    ckId = js_code.call('r',32)
    return ckId
    

def post_data():
    read_js_code()
    url = "https://api-c.liepin.com/api/com.liepin.searchfront4c.pc-search-job"
    headers = {
        'Accept': 'application/json, text/plain, */*',
        'Accept-Encoding': 'gzip, deflate, br'
    }
    list = ["H01$H0001","H01$H0002",
            "H01$H0003","H01$H0004","H01$H0005",
            "H01$H0006","H01$H0007","H01$H0008",
            "H01$H0009","H01$H00010","H02$H0018","H02$H0019","H03$H0022",
            "H03$H0023","H03$H0024","H03$H0025","H04$H0030","H04$H0031",
            "H04$H0032","H05$H05","H06$H06","H07$H07","H08$H08"]
    for name in list:
        print("-------{}---------".format(name))
        for i in range(10):
            print("------------第{}页-----------".format(i))
            data = {"data": {"mainSearchPcConditionForm":
                                 {"city": "410", "dq": "410", "pubTime": "", "currentPage": i, "pageSize": 40, "key": "",
                                  "suggestTag": "", "workYearCode": "1", "compId": "", "compName": "", "compTag": "",
                                  "industry": name, "salary": "", "jobKind": "", "compScale": "", "compKind": "", "compStage": "",
                                  "eduLevel": ""},
                             "passThroughForm":
                                 {"scene": "page", "skId": "z33lm3jhwza7k1xjvcyn8lb8e9ghxx1b",
                                  "fkId": "z33lm3jhwza7k1xjvcyn8lb8e9ghxx1b",
                                  "ckId": read_js_code(),
                                  'sfrom': 'search_job_pc'}}}
            response = requests.post(url=url, json=data, headers=headers)
            time.sleep(2)
            parse_data(response)


def parse_data(response):
    try:
        jobCardList = response.json()['data']['data']['jobCardList']
        sync_data2db(jobCardList)
    except Exception as e:
        return

if __name__ == '__main__':
    post_data()

2. 数据预处理

获取到的原始数据往往杂乱无章,需要进行预处理才能进行后续的分析工作。预处理包括数据清洗、去重、缺失值处理、数据格式转换等环节,以确保数据的质量和一致性。在这一阶段,还可以利用自然语言处理技术对文本数据进行分词、词性标注等操作,为后续的分析提供更多维度的信息。然后将数据加载到hive中进行分析。

CREATE TABLE mydb.data (
  id INT,
  title STRING,
  city STRING,
  salary STRING,
  campus_job_kind STRING,
  labels STRING,
  compName STRING,
  compIndustry STRING,
  compScale STRING
)
COMMENT '数据表'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;

LOAD DATA INPATH '/file.csv' OVERWRITE INTO TABLE mydb.data;

3. 数据分析

有了清洗和存储好的数据,接下来就是进行数据分析。数据分析的方法多种多样,可以根据具体的需求选择合适的分析技术和模型。常见的数据分析技术包括统计分析、机器学习、文本挖掘等。通过对

招聘数据的分析,我们可以发现人才市场的热点行业、热门职位、薪资水平等信息,为企业招聘决策提供参考。

def city_count_from_db():
    tuple = []
    try:
        with connection.cursor() as cursor:
            select_query = "select * from (select city,count(1) cnt FROM data group by city)a limit 10"
            cursor.execute(select_query)
            result = cursor.fetchall()
            for row in result:
                tuple.append((row['city'],row['cnt']))
    except Exception as e:
        print(e)
    return tuple



def salary_avg_from_db():
    x=[]
    y=[]
    try:
        with connection.cursor() as cursor:
            select_query = "select * from (select city,avg(salary) avg FROM data group by city)a limit 20"
            cursor.execute(select_query)
            result = cursor.fetchall()
            for row in result:
                x.append(row['city'])
                y.append(int(row['avg']))
    except Exception as e:
        print(e)
    return x,y


def salary_industry_from_db():
    x=[]
    y=[]
    try:
        with connection.cursor() as cursor:
            select_query = "select * from (select compIndustry,avg(salary) avg FROM data group by compIndustry)a limit 20"
            cursor.execute(select_query)
            result = cursor.fetchall()
            for row in result:
                x.append(row['compIndustry'])
                y.append(int(row['avg']))
    except Exception as e:
        print(e)
    return x,y

def salary_title_from_db():
    x=[]
    y=[]
    try:
        with connection.cursor() as cursor:
            select_query = "select title,count(1) cnt from data group by title order by cnt desc limit 10"
            cursor.execute(select_query)
            result = cursor.fetchall()
            for row in result:
                x.append(row['title'])
                y.append(int(row['cnt']))
    except Exception as e:
        print(e)
    return x,y

def comany_from_db():
    tuple = []
    try:
        with connection.cursor() as cursor:
            select_query = "select compName,count(1) cnt FROM data group by compName order by cnt desc limit 10"
            cursor.execute(select_query)
            result = cursor.fetchall()
            for row in result:
                tuple.append((row['compName'], row['cnt']))
    except Exception as e:
        print(e)
    return tuple

标题4. 数据可视化

最后,为了更直观地展示分析结果,我们利用Django框架搭建了数据可视化的平台。Django是一个高效的Web开发框架,通过它可以快速构建出美观、易用的数据可视化界面。在可视化界面上,我们可以展示招聘数据的各种统计图表、热点地图、词云等,帮助用户更直观地理解数据背后的信息。

def bar_chart(request):
    line = Line()
    x,y=salary_avg()
    line.add_xaxis(x)
    line.add_yaxis("全国应届毕业生就业城市薪资分布图", y)

    line1 = Line().set_global_opts(
        xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=90)),
    )
    x, y = title_count()
    line1.add_xaxis(x)
    line1.add_yaxis("全国应届毕业生就业岗位分布图", y)


    # 创建条形图
    bar = Bar().set_global_opts(
        xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=90)),
    )
    x,y = industry_avg()
    bar.add_xaxis(x)
    bar.add_yaxis("全国应届毕业生就业领域薪资分布图", y)

    # 创建饼图
    pie = Pie()
    tuple = city_top()
    pie.add("全国应届毕业生就业城市top10",tuple)

    pie1 = Pie()
    tuple1 = comany_count()
    pie1.add("全国应届毕业生就业公司top10",tuple1)

    # 获取图表的JavaScript代码
    line_js = line.render_embed()
    bar_js = bar.render_embed()
    pie_js = pie.render_embed()
    line1_js = line1.render_embed()
    pie1_js = pie1.render_embed()
    return render(request, 'charts/bar_chart.html', {'line': line_js, 'bar': bar_js, 'pie': pie_js,'line1': line1_js,'pie1': pie1_js})


下面是数据分析的展示结果,喜欢的可以加个收藏点个关注哦,更多毕设相关内容,小编将持续分享哦


相关文章
|
23天前
|
数据采集 存储 机器学习/深度学习
数据的秘密:如何用大数据分析挖掘商业价值
数据的秘密:如何用大数据分析挖掘商业价值
47 9
|
1月前
|
传感器 人工智能 大数据
高科技生命体征探测器、情绪感受器以及传感器背后的大数据平台在健康监测、生命体征检测领域的设想与系统构建
本系统由健康传感器、大数据云平台和脑机接口设备组成。传感器内置生命体征感应器、全球无线定位、人脸识别摄像头等,搜集超出现有科学认知的生命体征信息。云平台整合大数据、云计算与AI,处理并传输数据至接收者大脑芯片,实现实时健康监测。脑机接口设备通过先进通讯技术,实现对健康信息的实时感知与反馈,确保身份验证与数据安全。
|
2月前
|
机器学习/深度学习 数据可视化 大数据
机器学习与大数据分析的结合:智能决策的新引擎
机器学习与大数据分析的结合:智能决策的新引擎
246 15
|
2月前
|
分布式计算 DataWorks 搜索推荐
用户画像分析(MaxCompute简化版)
通过本教程,您可以了解如何使用DataWorks和MaxCompute产品组合进行数仓开发与分析,并通过案例体验DataWorks数据集成、数据开发和运维中心模块的相关能力。
|
2月前
|
SQL 分布式计算 DataWorks
DataWorks产品测评|基于DataWorks和MaxCompute产品组合实现用户画像分析
本文介绍了如何使用DataWorks和MaxCompute产品组合实现用户画像分析。首先,通过阿里云官网开通DataWorks服务并创建资源组,接着创建MaxCompute项目和数据源。随后,利用DataWorks的数据集成和数据开发模块,将业务数据同步至MaxCompute,并通过ODPS SQL完成用户画像的数据加工,最终将结果写入`ads_user_info_1d`表。文章详细记录了每一步的操作过程,包括任务开发、运行、运维操作和资源释放,帮助读者顺利完成用户画像分析。此外,还指出了文档中的一些不一致之处,并提供了相应的解决方法。
|
3月前
|
机器学习/深度学习 存储 大数据
在大数据时代,高维数据处理成为难题,主成分分析(PCA)作为一种有效的数据降维技术,通过线性变换将数据投影到新的坐标系
在大数据时代,高维数据处理成为难题,主成分分析(PCA)作为一种有效的数据降维技术,通过线性变换将数据投影到新的坐标系,保留最大方差信息,实现数据压缩、去噪及可视化。本文详解PCA原理、步骤及其Python实现,探讨其在图像压缩、特征提取等领域的应用,并指出使用时的注意事项,旨在帮助读者掌握这一强大工具。
175 4
|
3月前
|
关系型数据库 分布式数据库 数据库
PolarDB 以其出色的性能和可扩展性,成为大数据分析的重要工具
在数字化时代,企业面对海量数据的挑战,PolarDB 以其出色的性能和可扩展性,成为大数据分析的重要工具。它不仅支持高速数据读写,还通过数据分区、索引优化等策略提升分析效率,适用于电商、金融等多个行业,助力企业精准决策。
79 4
|
3月前
|
机器学习/深度学习 分布式计算 算法
【大数据分析&机器学习】分布式机器学习
本文主要介绍分布式机器学习基础知识,并介绍主流的分布式机器学习框架,结合实例介绍一些机器学习算法。
521 5
|
4月前
|
SQL 分布式计算 Java
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
107 0
|
7月前
|
SQL 分布式计算 大数据
大数据处理平台Hive详解
【7月更文挑战第15天】Hive作为基于Hadoop的数据仓库工具,在大数据处理和分析领域发挥着重要作用。通过提供类SQL的查询语言,Hive降低了数据处理的门槛,使得具有SQL背景的开发者可以轻松地处理大规模数据。然而,Hive也存在查询延迟高、表达能力有限等缺点,需要在实际应用中根据具体场景和需求进行选择和优化。