基于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})


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


相关文章
|
15天前
|
机器学习/深度学习 分布式计算 算法
Spark快速大数据分析PDF下载读书分享推荐
《Spark快速大数据分析》适合初学者,聚焦Spark实用技巧,同时深入核心概念。作者团队来自Databricks,书中详述Spark 3.0新特性,结合机器学习展示大数据分析。Spark是大数据分析的首选工具,本书助你驾驭这一利器。[PDF下载链接][1]。 ![Spark Book Cover][2] [1]: https://zhangfeidezhu.com/?p=345 [2]: https://i-blog.csdnimg.cn/direct/6b851489ad1944548602766ea9d62136.png#pic_center
41 1
Spark快速大数据分析PDF下载读书分享推荐
|
7天前
|
SQL 分布式计算 大数据
大数据处理平台Hive详解
【7月更文挑战第15天】Hive作为基于Hadoop的数据仓库工具,在大数据处理和分析领域发挥着重要作用。通过提供类SQL的查询语言,Hive降低了数据处理的门槛,使得具有SQL背景的开发者可以轻松地处理大规模数据。然而,Hive也存在查询延迟高、表达能力有限等缺点,需要在实际应用中根据具体场景和需求进行选择和优化。
|
13天前
|
数据采集 自然语言处理 大数据
​「Python大数据」LDA主题分析模型
使用Python进行文本聚类,流程包括读取VOC数据、jieba分词、去除停用词,应用LDA模型(n_components=5)进行主题分析,并通过pyLDAvis生成可视化HTML。关键代码涉及数据预处理、CountVectorizer、LatentDirichletAllocation以及HTML文件的本地化处理。停用词和业务术语列表用于优化分词效果。
17 0
​「Python大数据」LDA主题分析模型
|
18天前
|
人工智能 自然语言处理 小程序
政务VR导航:跨界融合AI人工智能与大数据分析,打造全方位智能政务服务
政务大厅引入智能导航系统,解决寻路难、指引不足及咨询台压力大的问题。VR导视与AI助手提供在线预览、VR路线指引、智能客服和小程序服务,提高办事效率,减轻咨询台工作,优化群众体验,塑造智慧政务形象。通过线上线下结合,实现政务服务的高效便民。
57 0
政务VR导航:跨界融合AI人工智能与大数据分析,打造全方位智能政务服务
|
19天前
|
数据可视化 前端开发 大数据
商场智能导视系统深度解析,AR与大数据融合创新商业运营模式
**商场智能导视系统提升购物体验:** 通过三维电子地图、AR导航、AR营销、VR全景导购及可视化数据,解决顾客寻路困扰,增强店铺曝光,简化招商流程,优化商场管理,借助科技创新驱动顾客满意度、品牌曝光度及运营效率的全面提升。
41 0
商场智能导视系统深度解析,AR与大数据融合创新商业运营模式
|
3天前
|
分布式计算 DataWorks 调度
MaxCompute产品使用合集之如何将数据迁移到CDH Hive
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
14天前
|
存储 分布式计算 并行计算
使用Hadoop构建Java大数据分析平台
使用Hadoop构建Java大数据分析平台
|
16天前
|
运维 监控 大数据
部署-Linux01,后端开发,运维开发,大数据开发,测试开发,后端软件,大数据系统,运维监控,测试程序,网页服务都要在Linux中进行部署
部署-Linux01,后端开发,运维开发,大数据开发,测试开发,后端软件,大数据系统,运维监控,测试程序,网页服务都要在Linux中进行部署
|
20天前
|
分布式计算 Java 大数据
实战:基于Java的大数据处理与分析平台
实战:基于Java的大数据处理与分析平台
|
3天前
|
SQL 机器学习/深度学习 分布式计算
MaxCompute产品使用合集之数据删除之后,是否支持回滚
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。