教程演示

  • 创建爬虫项目
    • 编写需要爬取的字段(items.py)
    • 编写spider文件(wuyou.py)
    • 编写数据库连接(pipelines.py)
    • 编写反爬措施(settings.py)
  • MongoDB数据库的安装
    • 软件下载
  • 数据测试
    • 本人已经爬取了一部分数据,分享出来供大家测试
  • 配置Linux环境
    • 在这里本人使用的资源都会发布出来
    • 为了方便大家的测试,配置好的虚拟机我也会分享出来
    • 启动Hadoop集群
  • 数据储存
    • 具体要求:将爬取的数据存储到hdfs上。利用flume收集日志
      • 1:将mongodb数据库的爬虫数据导入出来存为csv或者txt文件
      • flume配置文件
      • flume启动命令
      • 往监控文件夹丢入爬虫数据文件
      • 查看hdfs是否存在数据
  • 数据分析和可视化
    • 准备
    • 本地数据直接导入hdfs
    • 导入到hive表里
      • 启动hive远程服务
      • 建表
        • 建表成功
        • 查看hive数据库
      • 数据导入
      • 查看hive数据库qianchengwuyou表
    • 数据分析
      • 环境关系图
      • (1) 分析“数据分析”、“大数据开发工程师”、“数据采集”等岗位的平均工资、最高工资、最低工资,并作条形图将结果展示出来;
      • (2) 分析“数据分析”、“大数据开发工程师”、“数据采集”等大数据相关岗位在成都、北京、上海、广州、深圳的岗位数,并做饼图将结果展示出来。
      • (3) 分析大数据相关岗位1-3年工作经验的薪资水平(平均工资、最高工资、最低工资),并做出条形图展示出来;
      • (4) 分析大数据相关岗位几年需求的走向趋势,并做出折线图展示出来;
      • 建Hive四张表
      • 在MySQL建相同结构的表
      • 以上所有文件
  • 数据分析和可视化代码
  • 到此实训结束,感谢大家观看
  • ps:推荐大家使用我的虚拟机进行测试,某些功能如远程连接hive需要特定的jar包,远程连接也要特定的jar包,sqoop也需要jar包

本次演示的是爬取前程无忧网站,因为该网站几乎不存在防爬措施,对爬虫练习十分友好

创建爬虫项目

scrapy startproject qianchengwuyou
cd qianchengwuyou
scrapy genspider wuyou jobs.51job.com

编写需要爬取的字段(items.py)

import scrapyclass QianchengwuyouItem(scrapy.Item):# define the fields for your item here like:# name = scrapy.Field()# 职位名称Job_title = scrapy.Field()# 薪资水平Pay_level = scrapy.Field()# 招聘单位Recruitment_unit = scrapy.Field()# 工作地点Workplace = scrapy.Field()# 工作经验hands_background = scrapy.Field()# 学历要求Education_requirements = scrapy.Field()# 职位信息(工作内容+任职要求+工作经验)Career_information = scrapy.Field()# 关键字:keywordkeyword = scrapy.Field()# 日期day = scrapy.Field()

编写spider文件(wuyou.py)

import scrapy
import re
from ..items import QianchengwuyouItemclass WuyouSpider(scrapy.Spider):name = 'wuyou'allowed_domains = ['search.51job.com','jobs.51job.com']start_urls = ['https://search.51job.com/list/000000,000000,0000,00,3,99,%25E5%25A4%25A7%25E6%2595%25B0%25E6%258D%25AE,2,1.html?lang=c&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&ord_field=1&dibiaoid=0&line=&welfare=']# for a in range(1,800):#     print('正在爬取第' + str(a) + '页')# url = ('https://search.51job.com/list/000000,000000,0000,00,3,99,%25E5%25A4%25A7%25E6%2595%25B0%25E6%258D%25AE,2,1.html?lang=c&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&ord_field=1&dibiaoid=0&line=&welfare=')# start_urls.append(url)def parse(self, response):# 获取全部招聘职位的链接all_list = response.xpath('//*[@id="resultList"]//div[@class="el"]')# 获取全部招聘职位下的所有行业(industry)链接for b in all_list:all_url = b.xpath('./p/span/a/@href').extract_first()yield scrapy.Request(all_url,callback=self.parse_details)print(all_url)next_url = response.xpath("//*[@id='resultList']//div[@class='p_in']//li/a[text()='下一页']/@href").extract_first()if next_url is not None:yield  scrapy.Request(next_url,callback=self.parse)elif next_url is None:print("爬虫结束!")# selectors = response.xpath('//div[@class="el"]')# for selector in selectors:#     # 详细页网址#     post = selector.xpath('./p/span/a/text()').get(default='000 ').replace('\r\n', '')#     day = selector.xpath('./span[4]/text()').get(default='000 ')#     print(post,day)def parse_details(self, response):# 获取详情页面数据print("=" * 100)print(response.url)print("正在爬取数据!")item = QianchengwuyouItem()# 职位名称item["Job_title"] = response.xpath("//div[@class='cn']/h1/text()").extract_first()item["Job_title"] = [i.strip() for i in item["Job_title"]]item["Job_title"] = [i for i in item["Job_title"] if len(i) > 0]item["Job_title"] = "".join(item["Job_title"]).replace(",", ",")# 薪资水平item["Pay_level"] = response.xpath("//div[@class='cn']/strong/text()").extract_first()# 招聘单位item["Recruitment_unit"] = response.xpath("//div[@class='cn']//a[1]/text()").extract_first()# 工作地点 + 工作经验 + 学历要求....都在//div[@class='cn']/p[2]中item["Workplace"] = response.xpath("//div[@class='cn']/p[2]/text()[1]").get().replace('\xa0','')# 工作经验 + 学历要求item["hands_background"] = response.xpath("//div[@class='cn']/p[2]/text()").extract()item["hands_background"] = [i.strip() for i in item["hands_background"]]item["hands_background"] = [i for i in item["hands_background"] if "经验" in i]item["hands_background"] = " ".join(item["hands_background"]).replace("\xa0", "")if len(item["hands_background"]) == 0:item["hands_background"] = "无"all = response.xpath("//div[@class='cn']/p[2]/text()[2]").get().replace('\xa0','')# 判断工作经验是否存在if len(all) >= 4:item["Education_requirements"] = response.xpath("//div[@class='cn']/p[2]/text()[3]").get().replace('\xa0','')if len(item["Education_requirements"]) != 2:item["Education_requirements"] = "无"elif len(all) < 4:item["Education_requirements"] = "无"elif len(all) == 2:item["Education_requirements"] = allitem["Career_information"] = response.xpath("//div[@class='bmsg job_msg inbox']//text()").extract()item["Career_information"] = [i.strip() for i in item["Career_information"]]item["Career_information"] = [i for i in item["Career_information"] if len(i) > 0]item["Career_information"] = " ".join(item["Career_information"]).replace("\xa0","").replace(",",",")if (item["Pay_level"]) is None:item["Pay_level"] = "无"# 关键字:keyworditem["keyword"] = response.xpath("//div[@class='mt10']//p//a/text()").extract()# item["keyword"] = [i.strip() for i in item["keyword"]]item["keyword"] = [i for i in item["keyword"] if len(i) > 0]item["keyword"] = " ".join(item["keyword"]).replace("\xa0", "").replace(",", ",")# 日期item["day"] = response.xpath("//div[@class='cn']/p[2]/@title").get().replace("\xa0","")riqi = re.findall("(\d+-\d+)发布", response.text)[0]item["day"] = riqiyield itemprint("数据爬取成功!")

编写数据库连接(pipelines.py)

from pymongo import MongoClientclass QianchengwuyouPipeline:def open_spider(self, spider):self.db = MongoClient("localhost", 27017).qiancheng  # 创建数据库ycself.collection = self.db.liuli05  # 创建一个集合def process_item(self, item, spider):# 添加数据到jingjiren表中self.collection.insert_one(dict(item))return itemdef close_spider(self, spider):self.collection.close()

编写反爬措施(settings.py)

BOT_NAME = 'qianchengwuyou'SPIDER_MODULES = ['qianchengwuyou.spiders']
NEWSPIDER_MODULE = 'qianchengwuyou.spiders'# Crawl responsibly by identifying yourself (and your website) on the user-agent
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 ' \'Safari/537.36 Edg/83.0.478.58 '# Obey robots.txt rules
ROBOTSTXT_OBEY = False
FEED_EXPORT_ENCODING = 'utf-8'
# Configure maximum concurrent requests performed by Scrapy (default: 16)
#CONCURRENT_REQUESTS = 32# Configure a delay for requests for the same website (default: 0)
# See https://docs.scrapy.org/en/latest/topics/settings.html#download-delay
# See also autothrottle settings and docs
DOWNLOAD_DELAY = 1
# The download delay setting will honor only one of:
#CONCURRENT_REQUESTS_PER_DOMAIN = 16
#CONCURRENT_REQUESTS_PER_IP = 16# Disable cookies (enabled by default)
COOKIES_ENABLED = False
# # 启用pipeline
ITEM_PIPELINES = {'qianchengwuyou.pipelines.QianchengwuyouPipeline':300,
}

如果运行没问题的话,mongosb数据库应该会有数据

MongoDB数据库的安装

软件下载

mongodb:链接: https://pan.baidu.com/s/1Yf_7g4kSY_wvWde78wlzpQ 提取码: f6se
安装教程

数据测试

本人已经爬取了一部分数据,分享出来供大家测试

链接: https://pan.baidu.com/s/1ymL917_etE-5Fn2HBuWHFQ 提取码: 5x5k

配置Linux环境

在这里本人使用的资源都会发布出来

集合:链接: https://pan.baidu.com/s/1KeFcPVKdlWeJHJIT6VemAg 提取码: pk3v

为了方便大家的测试,配置好的虚拟机我也会分享出来

ps:我搭建的完全分布式,共三台电脑,我发布的是主机,另外两台傀儡机大家从主机复制两份就可以了,改主机名和ip地址就可以了
链接: https://pan.baidu.com/s/1sIPW_D0JuvxfXLXJP7hNqQ 提取码: 9hdg

启动Hadoop集群

hadoop01:start-dfs.sh
hadoop02:start-yarn.sh

数据储存

具体要求:将爬取的数据存储到hdfs上。利用flume收集日志

1:将mongodb数据库的爬虫数据导入出来存为csv或者txt文件

如果是csv文件可以用python代码写

import pymongo
import csvmongo_url = "localhost:27017"
DATABASE = "xxxxx" #数据库名称
TABLE = "xxxx" #集合名(表名)
client = pymongo.MongoClient(mongo_url)
db_des = client[DATABASE]
db_des_table = db_des[TABLE]# newline='' 的作用是防止结果数据中出现空行,专属于python3
with open(f"{DATABASE}_{TABLE}.csv", "w", newline='',encoding="utf-8") as csvfileWriter:writer = csv.writer(csvfileWriter)fieldList = ["Job_title","Pay_level","Recruitment_unit","Workplace","hands_background","Education_requirements","Career_information","keyword","day"]writer.writerow(fieldList)allRecordRes = db_des_table.find()# 写入多行数据for record in allRecordRes:# print(f"record = {record}")recordValueLst = []for field in fieldList:if field not in record:recordValueLst.append("None")else:recordValueLst.append(record[field])try:writer.writerow(recordValueLst)except Exception as e:print(f"write csv exception. e = {e}")print("数据导出成功!")

但是为了后面用flume收集数据则txt文件比较好
txt文件可以用Navicat Premium 15导出
Navicat Premium 15破解软件
链接: https://pan.baidu.com/s/1_SA8xEemn0a5Vvp7CQ870g 提取码: 5fb9 复制这段内容后打开百度网盘手机App,操作更方便哦

flume配置文件

# The configuration file needs to define the sources, 
# the channels and the sinks.
# Sources, channels and sinks are defined per agent, 
# in this case called 'agent'
# 定义别名
a1.sources = r1
a1.sinks = k1
a1.channels = c1# 描述/配置源source
a1.sources.r1.type = spooldir
# 设置监控的文件夹
# 扫描文件之后修改文件后缀
a1.sources.r1.spoolDir = /usr/qianchengwuyou
# 上传成功后显示后缀名 
a1.sources.r1.fileSuffix = .COMPLETED
# 如论如何 加绝对路径的文件名 默认false
a1.sources.r1.fileHeader = true
# #忽略所有以.tmp结尾的文件,不上传
a1.sources.r1.ignorePattern = ([^ ]*\.tmp)
#开启日志长度截取标志,默认true,开启
a1.sources.tail.interceptors.i2.cutFlag = true
#最大截取字符串长度,整数,尽量控制在2M以内,单位:kb,1M=1024
a1.sources.tail.interceptors.i2.cutMax = 2048
#
# # 描述一下sink 下沉到hdfs
a1.sinks.k1.type = hdfs
a1.sinks.k1.hdfs.path = /Hadoop/flume/%y-%m-%d/%H-%M/
# #上传文件的前缀
a1.sinks.k1.hdfs.filePrefix = pachong
# #是否按照时间滚动文件夹
a1.sinks.k1.hdfs.round = true
# #多少时间单位创建一个新的文件夹
a1.sinks.k1.hdfs.roundValue = 1
# #重新定义时间单位
a1.sinks.k1.hdfs.roundUnit = hour
# #是否使用本地时间戳
a1.sinks.k1.hdfs.useLocalTimeStamp = true
# #积攒多少个Event才flush到HDFS一次
a1.sinks.k1.hdfs.batchSize = 10
# #设置文件类型,可支持压缩
a1.sinks.k1.hdfs.fileType = DataStream
# #多久生成一个新的文件
a1.sinks.k1.hdfs.rollInterval = 600
# #设置每个文件的滚动大小
a1.sinks.k1.hdfs.rollSize = 134217700
# #文件的滚动与Event数量无关
a1.sinks.k1.hdfs.rollCount = 0
# #最小冗余数
a1.sinks.k1.hdfs.minBlockReplicas = 1
# # 使用在内存中缓冲事件的通道
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
#
# # 将源和接收器绑定到通道
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

flume启动命令

进入flume安装目录conf文件夹

flume-ng agent -c conf -f 文件名称 -n a1 &

在这里插入图片描述

往监控文件夹丢入爬虫数据文件

在这里插入图片描述
在这里插入图片描述

查看hdfs是否存在数据

在这里插入图片描述

数据分析和可视化

准备

实训要求是用flume传输爬虫数据到hdfs,但是文件名会变换,由于我是用python代码连接hive进行数据分析,导入数据到hive表里也是用代码完成的,所以我是用代码将爬虫数据文件直接传输到hdfs上再导入进hive,原理都是一样的。

本地数据直接导入hdfs

from pyhdfs import HdfsClient
client = HdfsClient(hosts='192.168.1.101:50070', user_name='hadoop')
client.copy_from_local('E:\爬虫2020上半年实训\刘利\qiancheng_liuli05.csv', '/MongoDB/qiancheng_liuli05.csv')  # 本地文件绝对路径,HDFS目录必须不存在
print("文件上传成功!")

在这里插入图片描述
在这里插入图片描述

导入到hive表里

启动hive远程服务

hive --service hiveserver2 &

Ps:此功能需要导入特定的jar方可开启(环境已配置好)

建表

在这里插入图片描述
row format delimited fields terminated by ‘,’
规定数据导入时的数据划分以”,”来划分
Tblproperties(“skip.header.line.count”=“1”
如果使用的文件格式为csv,表示跳过第一条数据,因为csv文件的第一条数据是字段名

建表成功

在这里插入图片描述

查看hive数据库

在这里插入图片描述

数据导入

from impala.dbapi import connect
conn = connect(host='192.168.1.101',port=10000,auth_mechanism='LDAP',user='root',password='gongjing',database='mongodb')
try:cursor = conn.cursor()sql1 = 'load data inpath "/MongoDB/qiancheng_liuli05.csv" overwrite into table qianchengwuyou'# sql2 = 'load data inpath "/MongoDB/三大岗位薪资水平.txt" overwrite into table table01'# sql3 = 'load data inpath "/MongoDB/大数据相关岗位分布.txt" overwrite into table table02'# sql4 = 'load data inpath "/MongoDB/大数据相关岗位1-3年工作经验薪资水平.txt" overwrite into table table03'# sql5 = 'load data inpath "/MongoDB/大数据相关岗位需求.txt" overwrite into table table04'cursor.execute(sql1)# cursor.execute(sql2)# cursor.execute(sql3)# cursor.execute(sql4)# cursor.execute(sql5)# commit 修改conn.commit()# 关闭游标cursor.close()print("数据导入成功!")
except:print("数据导入失败!")# 发生错误时回滚conn.rollback()

在这里插入图片描述

查看hive数据库qianchengwuyou表

在这里插入图片描述
数据导入成功

数据分析

步骤1:创建四张hive表table01,table02,table03,table04用作存放分析结果
步骤2:读取qianchengwuyou表的数据进行数据分析绘图并将分析数据写入txt文件通过前面教程将四张txt文件数据分别导入四张hive表
疑问:为什么不将分析数据直接导入四张对应的表中?
回答:因为python连接hive的模块主要有两个pyhive和impyla两个,这里不推荐前者,因为pyhive模块的依赖包有一个是sasl包是python3.8不支持的而且必须还要一个c++编译器,很麻烦,impyla安装就很轻松,但是无论是哪个模块,虽然都能将数据远程导入hive表,但是很慢很慢的那种,我第一次要不是因为还能点击电脑都以为电脑死机了。

环境关系图

在这里插入图片描述
箭头表示数据的反向
可以看出python能读取hive数据但是不能向hive插入数据,太慢
所以我的思路就是python将分析结果保存到本地文件txt里,上传到hdfs上再导入的相应的表里

(1) 分析“数据分析”、“大数据开发工程师”、“数据采集”等岗位的平均工资、最高工资、最低工资,并作条形图将结果展示出来;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(2) 分析“数据分析”、“大数据开发工程师”、“数据采集”等大数据相关岗位在成都、北京、上海、广州、深圳的岗位数,并做饼图将结果展示出来。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(3) 分析大数据相关岗位1-3年工作经验的薪资水平(平均工资、最高工资、最低工资),并做出条形图展示出来;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(4) 分析大数据相关岗位几年需求的走向趋势,并做出折线图展示出来;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

建Hive四张表

在这里插入图片描述
查看数据库
在这里插入图片描述
导入对应数据
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在MySQL建相同结构的表

使用sqoop导入数据
启动zookeeper
zkServer.sh start
sqoop命令

sqoop export --connect jdbc:mysql://192.168.1.101:3306/qianchengwuyou  --username root --password gongjing --table  table01 --export-dir /usr/local/apache-hive-2.3.7-bin/warehouse/mongodb.db/table01 --input-fields-terminated-by ','
sqoop export --connect jdbc:mysql://192.168.1.101:3306/qianchengwuyou  --username root --password gongjing --table  table02 --export-dir /usr/local/apache-hive-2.3.7-bin/warehouse/mongodb.db/table02 --input-fields-terminated-by ','
sqoop export --connect jdbc:mysql://192.168.1.101:3306/qianchengwuyou  --username root --password gongjing --table  table03 --export-dir /usr/local/apache-hive-2.3.7-bin/warehouse/mongodb.db/table03 --input-fields-terminated-by ','
sqoop export --connect jdbc:mysql://192.168.1.101:3306/qianchengwuyou  --username root --password gongjing --table  table04 --export-dir /usr/local/apache-hive-2.3.7-bin/warehouse/mongodb.db/table04 --input-fields-terminated-by ','

在这里插入图片描述

以上所有文件

链接: https://pan.baidu.com/s/1n40D952JbuZ8xuHKEXSBFw 提取码: 2cd7 复制这段内容后打开百度网盘手机App,操作更方便哦

数据分析和可视化代码

import pymysql
import pymongo
import csv
import re
from pyhdfs import HdfsClient
from impala.dbapi import connect
from numpy import *
from pyecharts.charts import Bar, Pie, WordCloud,Line  # bar:条形图绘制模块,pie:饼图绘制模块,wordcloud:词云图绘制模块
from pyecharts.render import make_snapshot   # 绘图模块
from snapshot_phantomjs import snapshot
from pyecharts import options as opts, options
# pyecharts模块的详细使用教程和实例网址:http://pyecharts.org/#/
class HadoopDemo(object):# 导出mongodb数据库的爬虫数据def Data_export(self):# 初始化数据库mongo_url = "localhost:27017"DATABASE = "qiancheng"TABLE = "liuli03"client = pymongo.MongoClient(mongo_url)db_des = client[DATABASE]db_des_table = db_des[TABLE]# 将数据写入到CSV文件中# 如果直接从mongod booster导出, 一旦有部分出现字段缺失,那么会出现结果错位的问题# newline='' 的作用是防止结果数据中出现空行,专属于python3with open(f"{DATABASE}_{TABLE}.csv", "w", newline='', encoding="utf-8") as csvfileWriter:writer = csv.writer(csvfileWriter)# 先写列名# 写第一行,字段名fieldList = ["Job_title","Pay_level","Recruitment_unit","Workplace","hands_background","Education_requirements","Career_information","keyword","day"]writer.writerow(fieldList)allRecordRes = db_des_table.find()# 写入多行数据for record in allRecordRes:print(f"record = {record}")recordValueLst = []for field in fieldList:if field not in record:recordValueLst.append("None")else:recordValueLst.append(record[field])try:writer.writerow(recordValueLst)except Exception as e:print(f"write csv exception. e = {e}")print("数据导出成功")# client = HdfsClient(hosts='192.168.1.101:50070', user_name='hadoop')# client.copy_from_local('E:\爬虫2020上半年实训\刘利\qiancheng_liuli05.csv', '/MongoDB/qiancheng_liuli05.csv')  # 本地文件绝对路径,HDFS目录必须不存在# print("文件上传成功!")# 将数据导入hive表里def Data_import(self):conn = connect(host='192.168.1.101',port=10000,auth_mechanism='LDAP',user='root',password='gongjing',database='mongodb')cursor = conn.cursor()sql = 'load data inpath "/MongoDB/三大岗位薪资水平.txt" overwrite into table table01'cursor.execute(sql)# commit 修改conn.commit()# 关闭游标cursor.close()print("数据导入成功!")def Create_table_hive(self):# hive数据表创建from impala.dbapi import connectconn = connect(host='192.168.1.101',port=10000,auth_mechanism='LDAP',user='root',password='gongjing',database='mongodb')cursor = conn.cursor()def table(self):print("创建qianchengwuyou表用作爬虫数据存放")# 创建qianchengwuyou表用作爬虫数据存放sql01 = '''create table qianchengwuyou(Job_title varchar(100),Pay_level varchar(100),Recruitment_unit varchar(100),Workplace varchar(100),hands_background varchar(100),Education_requirements varchar(100),Career_information varchar(10000),keyword varchar(1000),day varchar(100))row format delimited fields terminated by ','tblproperties("skip.header.line.count"="1")'''cursor.execute(sql01)print("建表成功!")def table01(self):print("创建table01表用作分析“数据分析”、“大数据开发工程师”、“数据采集”等岗位的平均工资、最高工资、最低工资")# 创建table01表用作分析“数据分析”、“大数据开发工程师”、“数据采集”等岗位的平均工资、最高工资、最低工资sql01 = '''create table table01(job_title varchar(100),max_pay_level varchar(100),average_pay_level varchar(100),min_pay_level varchar(100))row format delimited fields terminated by ',' '''cursor.execute(sql01)print("table01表建表成功!")def table02(self):print("创建table02表用作分析“数据分析”、“大数据开发工程师”、“数据采集”等大数据相关岗位在成都、北京、上海、广州、深圳的岗位数")# 创建table02表用作分析“数据分析”、“大数据开发工程师”、“数据采集”等大数据相关岗位在成都、北京、上海、广州、深圳的岗位数sql01 = '''create table table02(region varchar(100),number varchar(100))row format delimited fields terminated by ',' '''cursor.execute(sql01)print("table02表建表成功!")def table03(self):print("创建table03表用作分析大数据相关岗位1 - 3年工作经验的薪资水平(平均工资、最高工资、最低工资)")# 创建table03表用作分析大数据相关岗位1-3年工作经验的薪资水平(平均工资、最高工资、最低工资)sql01 = '''create table table03(hands_background varchar(100),max_pay_level varchar(100),average_pay_level varchar(100),min_pay_level varchar(100))row format delimited fields terminated by ',' '''cursor.execute(sql01)print("table03表建表成功!")def table04(self):print("创建table04表用作分析大数据相关岗位几年需求的走向趋势")# 创建table04表用作分析大数据相关岗位近几天需求的走向趋势sql01 = '''create table table04(data varchar(100),number varchar(100))row format delimited fields terminated by ',' '''cursor.execute(sql01)print("table04表建表成功!")# table(self)# table01(self)# table02(self)table03(self)# table04(self)# commit 修改conn.commit()# 关闭游标cursor.close()def Create_table_mysql(self):print("连接MySQL数据库创建hive对应表")# 连接数据库conn = pymysql.connect(host='192.168.1.101',  # 主机名port=3306,  # 端口号(默认的)user='root',  # 用户名passwd='gongjing',  # 密码db='qianchengwuyou',  # 数据库名charset='utf8',  # 这里设置编码是为了输出中文)cursor = conn.cursor()def table01(self):print("创建table01表用作分析“数据分析”、“大数据开发工程师”、“数据采集”等岗位的最高工资、平均工资、最低工资")# 创建table01表用作分析“数据分析”、“大数据开发工程师”、“数据采集”等岗位的平均工资、最高工资、最低工资sql01 = '''create table table01(job_title varchar(100),max_pay_level varchar(100),average_pay_level varchar(100),min_pay_level varchar(100))'''cursor.execute(sql01)print("table01表建表成功!")def table02(self):print("创建table02表用作分析“数据分析”、“大数据开发工程师”、“数据采集”等大数据相关岗位在成都、北京、上海、广州、深圳的岗位数")# 创建table02表用作分析“数据分析”、“大数据开发工程师”、“数据采集”等大数据相关岗位在成都、北京、上海、广州、深圳的岗位数sql01 = '''create table table02(region varchar(100),number varchar(100))'''cursor.execute(sql01)print("table02表建表成功!")def table03(self):print("创建table03表用作分析大数据相关岗位1 - 3年工作经验的薪资水平(最高工资、平均工资、最低工资)")# 创建table03表用作分析大数据相关岗位1-3年工作经验的薪资水平(平均工资、最高工资、最低工资)sql01 = '''create table table03(hands_background varchar(100),max_pay_level varchar(100),average_pay_level varchar(100),min_pay_level varchar(100))'''cursor.execute(sql01)print("table03表建表成功!")def table04(self):print("创建table04表用作分析大数据相关岗位几年需求的走向趋势")# 创建table04表用作分析大数据相关岗位近几天需求的走向趋势sql01 = '''create table table04(data varchar(100),number varchar(100))'''cursor.execute(sql01)print("table04表建表成功!")# commit 修改table01(self)table02(self)table03(self)table04(self)conn.commit()# 关闭游标cursor.close()print(" ")def Pay_level01(self):# 分析“数据分析”、“大数据开发工程师”、“数据采集”等岗位的平均工资、最高工资、最低工资,并作条形图将结果展示出来conn = connect(host='192.168.1.101',port=10000,auth_mechanism='LDAP',user='root',password='gongjing',database='mongodb')cursor = conn.cursor()# 最低工资all_min_salary_list = []# 最高工资all_max_salary_list = []# 平均工资all_average_salary_list = []# 岗位call_addr_list = []# 求出数据分析相关岗位的平均工资、最高工资、最低工资def shujufenxi(self):# 最低工资min_salary_list = []# 最高工资max_salary_list = []# 平均工资average_salary_list = []sql01 = "select Pay_level from qianchengwuyou where Job_title like '%数据分析%' and Pay_level like '%/%'"  #.format(Job)cursor.execute(sql01)results = cursor.fetchall()for i in results:# 拆分列表获取关键数据if "万/月" in i[0]:wan_yue = re.findall(r"(.*)万/月", i[0])[0]num_list = wan_yue.split("-")num_1 = eval(num_list[0]) * 10num_2 = eval(num_list[1]) * 10i = str(num_1) + "-" + str(num_2) + "千/月"elif "万/年" in i[0]:wan_yue = re.findall(r"(.*)万/年", i[0])[0]num_list = wan_yue.split("-")num_1 = eval(num_list[0]) * 10 / 12num_2 = eval(num_list[1]) * 10 / 12i = str(int(num_1)) + "-" + str(int(num_2)) + "千/月"elif "千/月" in i[0]:wan_yue = re.findall(r"(.*)千/月", i[0])[0]num_list = wan_yue.split("-")num_1 = eval(num_list[0])num_2 = eval(num_list[1])i = str(num_1) + "-" + str(num_2) + "千/月"else:continuemin_salary = i.split("-")[0]max_salary = re.findall(r'([\d+\.]+)', (i.split("-")[1]))[0]average_salary = "{:.1f}".format((float(min_salary) + float(max_salary)) / 2)# 将获取的数据分别写入min_salary_list.append(eval(min_salary))max_salary_list.append(eval(max_salary))average_salary_list.append(eval(average_salary))listjob = '数据分析'listmin = min(min_salary_list)listmax = max(max_salary_list)listaverage = int(mean(average_salary_list))all_min_salary_list.append(listmin)# print(min_salary_list)all_max_salary_list.append(listmax)# print(max_salary_list)all_average_salary_list.append(listaverage)# print(average_salary_list)all_addr_list.append(listjob)print(listjob, listmin, listaverage, listmax)# 把分析结果写入三大岗位薪资水平.txt文件file = open('大数据三大相关岗位薪资水平.txt','w',encoding='utf-8')file.write('{},{},{},{}'.format(listjob,listmax,listaverage,listmin))file.write('\n')file.close()# 关闭游标conn.commit()# 求出大数据开发工程师相关岗位的平均工资、最高工资、最低工资def dashujukaifagongchengshi(self):# 最低工资min_salary_list = []# 最高工资max_salary_list = []# 平均工资average_salary_list = []sql = "select Pay_level from qianchengwuyou where Job_title like '%大数据开发工程师%' and Pay_level like '%/%'"  # .format(Job)cursor.execute(sql)results = cursor.fetchall()for i in results:# 拆分列表获取关键数据if "万/月" in i[0]:wan_yue = re.findall(r"(.*)万/月", i[0])[0]num_list = wan_yue.split("-")num_1 = eval(num_list[0]) * 10num_2 = eval(num_list[1]) * 10i = str(num_1) + "-" + str(num_2) + "千/月"elif "万/年" in i[0]:wan_yue = re.findall(r"(.*)万/年", i[0])[0]num_list = wan_yue.split("-")num_1 = eval(num_list[0]) * 10 / 12num_2 = eval(num_list[1]) * 10 / 12i = str(int(num_1)) + "-" + str(int(num_2)) + "千/月"elif "千/月" in i[0]:wan_yue = re.findall(r"(.*)千/月", i[0])[0]num_list = wan_yue.split("-")num_1 = eval(num_list[0])num_2 = eval(num_list[1])i = str(num_1) + "-" + str(num_2) + "千/月"else:continuemin_salary = i.split("-")[0]max_salary = re.findall(r'([\d+\.]+)', (i.split("-")[1]))[0]average_salary = "{:.1f}".format((float(min_salary) + float(max_salary)) / 2)# 将获取的数据分别写入min_salary_list.append(eval(min_salary))max_salary_list.append(eval(max_salary))average_salary_list.append(eval(average_salary))listjob = '大数据开发工程师'listmin = min(min_salary_list)listmax = max(max_salary_list)listaverage = int(mean(average_salary_list))all_min_salary_list.append(listmin)# print(min_salary_list)all_max_salary_list.append(listmax)# print(max_salary_list)all_average_salary_list.append(listaverage)# print(average_salary_list)all_addr_list.append(listjob)print(listjob, listmin, listaverage, listmax)# 把分析结果写入三大岗位薪资水平.txt文件file = open('大数据三大相关岗位薪资水平.txt', 'a+', encoding='utf-8')file.write('{},{},{},{}'.format(listjob, listmax, listaverage, listmin))file.write('\n')file.close()conn.commit()# 求出数据采集相关岗位的平均工资、最高工资、最低工资def shujucaiji(self):# 最低工资min_salary_list = []# 最高工资max_salary_list = []# 平均工资average_salary_list = []sql = "select Pay_level from qianchengwuyou where Job_title like '%数据采集%' and Pay_level like '%/%'"  # .format(Job)cursor.execute(sql)results = cursor.fetchall()for i in results:# 拆分列表获取关键数据if "万/月" in i[0]:wan_yue = re.findall(r"(.*)万/月", i[0])[0]num_list = wan_yue.split("-")num_1 = eval(num_list[0]) * 10num_2 = eval(num_list[1]) * 10i = str(num_1) + "-" + str(num_2) + "千/月"elif "万/年" in i[0]:wan_yue = re.findall(r"(.*)万/年", i[0])[0]num_list = wan_yue.split("-")num_1 = eval(num_list[0]) * 10 / 12num_2 = eval(num_list[1]) * 10 / 12i = str(int(num_1)) + "-" + str(int(num_2)) + "千/月"elif "千/月" in i[0]:wan_yue = re.findall(r"(.*)千/月", i[0])[0]num_list = wan_yue.split("-")num_1 = eval(num_list[0])num_2 = eval(num_list[1])i = str(num_1) + "-" + str(num_2) + "千/月"else:continuemin_salary = i.split("-")[0]max_salary = re.findall(r'([\d+\.]+)', (i.split("-")[1]))[0]average_salary = "{:.1f}".format((float(min_salary) + float(max_salary)) / 2)# 将获取的数据分别写入min_salary_list.append(eval(min_salary))max_salary_list.append(eval(max_salary))average_salary_list.append(eval(average_salary))listjob = '数据采集'listmin = min(min_salary_list)listmax = max(max_salary_list)listaverage = int(mean(average_salary_list))all_min_salary_list.append(listmin)# print(min_salary_list)all_max_salary_list.append(listmax)# print(max_salary_list)all_average_salary_list.append(listaverage)# print(average_salary_list)all_addr_list.append(listjob)print(listjob, listmin, listaverage, listmax)# 把分析结果写入三大岗位薪资水平.txt文件file = open('大数据三大相关岗位薪资水平.txt', 'a+', encoding='utf-8')file.write('{},{},{},{}'.format(listjob, listmax, listaverage, listmin))file.write('\n')file.close()# cursor.close()conn.commit()shujufenxi(self)dashujukaifagongchengshi(self)shujucaiji(self)# 关闭游标cursor.close()conn.commit()bar = Bar(init_opts=opts.InitOpts(width="1000px", height="800px"),)bar.set_global_opts(title_opts=opts.TitleOpts(title="大数据三大相关岗位薪资水平", subtitle="单位  千/月"),xaxis_opts=opts.AxisOpts(axislabel_opts={"rotate": 45}),)bar.add_xaxis(all_addr_list)bar.add_yaxis("最高薪资", all_max_salary_list)bar.add_yaxis("最低薪资", all_min_salary_list)bar.add_yaxis("平均薪资", all_average_salary_list)bar.render("大数据三大相关岗位薪资水平.html")print("大数据三大相关岗位薪资水平.html文件")# 分析“数据分析”、“大数据开发工程师”、“数据采集”等大数据相关岗位在成都、北京、上海、广州、深圳的岗位数def Job_distribution(self):conn = connect(host='192.168.1.101',port=10000,auth_mechanism='LDAP',user='root',password='gongjing',database='mongodb')chengdu_num = 0beijing_num = 0shanghai_num = 0guangzhou_num = 0shenzhen_num = 0cursor = conn.cursor()sql = "select Job_title,Workplace from qianchengwuyou where Job_title like '%数据%'"cursor.execute(sql)results = cursor.fetchall()# print(results)for i in results:# print(i[1])Workplace = i[1].split("-")[0]if "成都" in Workplace:chengdu_num += 1elif "北京" in i[1]:beijing_num += 1elif "上海" in i[1]:shanghai_num += 1elif "广州" in i[1]:guangzhou_num += 1elif "深圳" in i[1]:shenzhen_num += 1data = [("成都", str(chengdu_num)), ("北京", str(beijing_num)), ("上海", str(shanghai_num)), ("广州", str(guangzhou_num)),("深圳", str(shenzhen_num))]print(data)# 关闭游标cursor.close()conn.commit()# 将分析结果写入大数据相关岗位分布.txtfw = open('大数据相关岗位分布.txt', 'w',encoding='utf-8')for line in data:for i in line:fw.write(i)fw.write(',')fw.write('\n')fw.close()# 创建图表对象pie = Pie()# 关联数据pie.add(# 设置系列名称series_name="大数据相关岗位地区分布",# 设置需要展示的数据data_pair=data,# 设置圆环空心部分和数据显示部分的比例radius=["30%", "70%"],# 设置饼是不规则的rosetype="radius")# 设置数据显示的格式pie.set_series_opts(label_opts=options.LabelOpts(formatter="{b}: {d}%"))# 设置图表的标题pie.set_global_opts(title_opts=options.TitleOpts(title="大数据相关岗位分布"))# 数据渲染pie.render('大数据相关岗位分布.html')print("大数据相关岗位分布.html")# 分析大数据相关岗位1-3年工作经验的薪资水平(平均工资、最高工资、最低工资)def Pay_level02(self):# 最低工资all_min_salary_list = []# 最高工资all_max_salary_list = []# 平均工资all_average_salary_list = []# 经验all_addr_list = []conn = connect(host='192.168.1.101',port=10000,auth_mechanism='LDAP',user='root',password='gongjing',database='mongodb')cursor = conn.cursor()# 一年工作经验def yinian(self):# 最低工资min_salary_list = []# 最高工资max_salary_list = []# 平均工资average_salary_list = []sql = "select Pay_level from qianchengwuyou where (hands_background LIKE '%1-%' or hands_background LIKE '%1年%') and Job_title like '%大数据%' and Pay_level like '%/%'"cursor.execute(sql)results = cursor.fetchall()# print(results)for i in results:# 拆分列表获取关键数据if "万/月" in i[0]:wan_yue = re.findall(r"(.*)万/月", i[0])[0]num_list = wan_yue.split("-")num_1 = eval(num_list[0]) * 10num_2 = eval(num_list[1]) * 10i = str(num_1) + "-" + str(num_2) + "千/月"elif "万/年" in i[0]:wan_yue = re.findall(r"(.*)万/年", i[0])[0]num_list = wan_yue.split("-")num_1 = eval(num_list[0]) * 10 / 12num_2 = eval(num_list[1]) * 10 / 12i = str(int(num_1)) + "-" + str(int(num_2)) + "千/月"elif "千/月" in i[0]:wan_yue = re.findall(r"(.*)千/月", i[0])[0]num_list = wan_yue.split("-")num_1 = eval(num_list[0])num_2 = eval(num_list[1])i = str(num_1) + "-" + str(num_2) + "千/月"else:continuemin_salary = i.split("-")[0]max_salary = re.findall(r'([\d+\.]+)', (i.split("-")[1]))[0]average_salary = "{:.1f}".format((float(min_salary) + float(max_salary)) / 2)# 将获取的数据分别写入min_salary_list.append(eval(min_salary))max_salary_list.append(eval(max_salary))average_salary_list.append(eval(average_salary))listjob = '一年工作经验'listmin = min(min_salary_list)listmax = max(max_salary_list)listaverage = int(mean(average_salary_list))all_min_salary_list.append(listmin)all_max_salary_list.append(listmax)all_average_salary_list.append(listaverage)all_addr_list.append(listjob)print(listjob, listmin, listaverage, listmax)file = open('大数据相关岗位1-3年工作经验薪资水平.txt', 'w', encoding='utf-8')file.write('{},{},{},{}'.format(listjob, listmax, listaverage, listmin))file.write('\n')file.close()# 两年工作经验def liangnian(self):# 最低工资min_salary_list = []# 最高工资max_salary_list = []# 平均工资average_salary_list = []sql = "select Pay_level from qianchengwuyou where (hands_background LIKE '%2-%' or hands_background LIKE '%2年%') and Job_title like '%大数据%' and Pay_level like '%/%'"cursor.execute(sql)results = cursor.fetchall()for i in results:# 拆分列表获取关键数据if "万/月" in i[0]:wan_yue = re.findall(r"(.*)万/月", i[0])[0]num_list = wan_yue.split("-")num_1 = eval(num_list[0]) * 10num_2 = eval(num_list[1]) * 10i = str(num_1) + "-" + str(num_2) + "千/月"elif "万/年" in i[0]:wan_yue = re.findall(r"(.*)万/年", i[0])[0]num_list = wan_yue.split("-")num_1 = eval(num_list[0]) * 10 / 12num_2 = eval(num_list[1]) * 10 / 12i = str(int(num_1)) + "-" + str(int(num_2)) + "千/月"elif "千/月" in i[0]:wan_yue = re.findall(r"(.*)千/月", i[0])[0]num_list = wan_yue.split("-")num_1 = eval(num_list[0])num_2 = eval(num_list[1])i = str(num_1) + "-" + str(num_2) + "千/月"else:continuemin_salary = i.split("-")[0]max_salary = re.findall(r'([\d+\.]+)', (i.split("-")[1]))[0]average_salary = "{:.1f}".format((float(min_salary) + float(max_salary)) / 2)# 将获取的数据分别写入min_salary_list.append(eval(min_salary))max_salary_list.append(eval(max_salary))average_salary_list.append(eval(average_salary))listjob = '两年工作经验'listmin = min(min_salary_list)listmax = max(max_salary_list)listaverage = int(mean(average_salary_list))all_min_salary_list.append(listmin)all_max_salary_list.append(listmax)all_average_salary_list.append(listaverage)all_addr_list.append(listjob)print(listjob, listmin, listaverage, listmax)file = open('大数据相关岗位1-3年工作经验薪资水平.txt', 'a+', encoding='utf-8')file.write('{},{},{},{}'.format(listjob, listmax, listaverage, listmin))file.write('\n')file.close()# 关闭游标# cursor.close()# 三年工作经验def sannian(self):# 最低工资min_salary_list = []# 最高工资max_salary_list = []# 平均工资average_salary_list = []sql = "select Pay_level from qianchengwuyou where (hands_background LIKE '%1-%' or hands_background LIKE '%1年%') and Job_title like '%大数据%' and Pay_level like '%/%'"cursor.execute(sql)results = cursor.fetchall()for i in results:# 拆分列表获取关键数据if "万/月" in i[0]:wan_yue = re.findall(r"(.*)万/月", i[0])[0]num_list = wan_yue.split("-")num_1 = eval(num_list[0]) * 10num_2 = eval(num_list[1]) * 10i = str(num_1) + "-" + str(num_2) + "千/月"elif "万/年" in i[0]:wan_yue = re.findall(r"(.*)万/年", i[0])[0]num_list = wan_yue.split("-")num_1 = eval(num_list[0]) * 10 / 12num_2 = eval(num_list[1]) * 10 / 12i = str(int(num_1)) + "-" + str(int(num_2)) + "千/月"elif "千/月" in i[0]:wan_yue = re.findall(r"(.*)千/月", i[0])[0]num_list = wan_yue.split("-")num_1 = eval(num_list[0])num_2 = eval(num_list[1])i = str(num_1) + "-" + str(num_2) + "千/月"else:continuemin_salary = i.split("-")[0]max_salary = re.findall(r'([\d+\.]+)', (i.split("-")[1]))[0]average_salary = "{:.1f}".format((float(min_salary) + float(max_salary)) / 2)# 将获取的数据分别写入min_salary_list.append(eval(min_salary))max_salary_list.append(eval(max_salary))average_salary_list.append(eval(average_salary))listjob = '三年工作经验'listmin = min(min_salary_list)listmax = max(max_salary_list)listaverage = int(mean(average_salary_list))all_min_salary_list.append(listmin)all_max_salary_list.append(listmax)all_average_salary_list.append(listaverage)all_addr_list.append(listjob)print(listjob, listmin, listaverage, listmax)file = open('大数据相关岗位1-3年工作经验薪资水平.txt', 'a+', encoding='utf-8')file.write('{},{},{},{}'.format(listjob, listmax, listaverage, listmin))file.write('\n')file.close()yinian(self)liangnian(self)sannian(self)bar = Bar(init_opts=opts.InitOpts(width="800px", height="600px"),)bar.set_global_opts(title_opts=opts.TitleOpts(title="大数据1-3年工作经验薪资水平", subtitle="单位  千/月"),xaxis_opts=opts.AxisOpts(axislabel_opts={"rotate": 45}),)bar.add_xaxis(all_addr_list)bar.add_yaxis("最高薪资", all_max_salary_list)bar.add_yaxis("最低薪资", all_min_salary_list)bar.add_yaxis("平均薪资", all_average_salary_list)bar.render("大数据相关岗位1-3年工作经验薪资水平.html")# commit 修改conn.commit()# 关闭游标cursor.close()print("大数据相关岗位1-3年工作经验的薪资水平.html")# 分析大数据相关岗位几年需求的走向趋势def Demand_trend(self):a = []num = 0conn = connect(host='192.168.1.101',port=10000,auth_mechanism='LDAP',user='root',password='gongjing',database='mongodb')cursor = conn.cursor()sql = "select day from qianchengwuyou where day like '%-%'"cursor.execute(sql)results = cursor.fetchall()for i in results:a.append(i[0])num += 1a.sort(reverse=True)print(a)print(num)dict = {}date = []number = []for key in a:dict[key] = dict.get(key, 0) + 1print(dict)for key in dict.keys():date.append(key)# print(key)for value in dict.values():number.append(value)file = open('大数据相关岗位需求.txt', 'w', encoding='utf-8')for key, value in dict.items():value = str(value)file.write(key + ',')file.write(value + '\n')file.close()(Line(init_opts=opts.InitOpts(width="2000px", height="800px")).set_global_opts(title_opts=opts.TitleOpts(title="近几天大数据岗位需求", subtitle="仅供参考"),tooltip_opts=opts.TooltipOpts(is_show=True),xaxis_opts=opts.AxisOpts(type_="category"),yaxis_opts=opts.AxisOpts(type_="value",axistick_opts=opts.AxisTickOpts(is_show=True),splitline_opts=opts.SplitLineOpts(is_show=True),),).add_xaxis(xaxis_data=date).add_yaxis(series_name="大数据岗位",y_axis=number,symbol="emptyCircle",is_symbol_show=True,label_opts=opts.LabelOpts(is_show=False),).render("大数据相关岗位需求走势.html"))print("大数据相关岗位需求走势.html")
if __name__ == "__main__":hadoop = HadoopDemo()# 要测试哪个功能把注释去掉就可以# print("导出mongodb数据库中的爬虫数据并导入hdfs")# hadoop.Data_export()# hadoop.Data_import()# print("创建hive表")# hadoop.Create_table_hive()# print("创建和hive表相同结构的MySQL表")# hadoop.Create_table_mysql()# print("分析大数据三大相关岗位的薪资水平")# hadoop.Pay_level01()# print("分析大数据岗位的分布情况")# hadoop.Job_distribution()# print("分析1-3年工作经验的薪资水平")# hadoop.Pay_level02()# print("分析近几天大数据岗位需求")# hadoop.Demand_trend()

ps:本代码只在本人环境下运行成功,如有错误,肯定不是我的问题
附上一张pip 模块包图
因为安装某些模块需要依赖包,否则会报错

httptools          0.1.1
hyperlink          19.0.0
idna               2.9
imageio            2.8.0
impala             0.2
impyla             0.16.2
incremental        17.5.0
ipykernel          5.3.0
ipython            7.16.1
ipython-genutils   0.2.0
jedi               0.17.1
jieba              0.42.1
Jinja2             2.11.2
json5              0.9.5
jsonschema         3.2.0
jupyter-client     6.1.3
jupyter-core       4.6.3
jupyter-pip        0.3.1
jupyterlab         2.1.5
jupyterlab-server  1.1.5
kiwisolver         1.2.0
lxml               4.5.1
MarkupSafe         1.1.1
matplotlib         3.2.2
mistune            0.8.4
Naked              0.1.31
nbconvert          5.6.1
nbformat           5.0.7
notebook           6.0.3
numpy              1.19.0
packaging          20.4
pandas             1.0.5
pandocfilters      1.4.2
paramiko           2.7.1
parsel             1.6.0
parso              0.7.0
phantomjs          1.3.0
pickleshare        0.7.5
Pillow             7.1.2
pip                20.1.1
plotly             4.8.2
ply                3.11
prettytable        0.7.2
prometheus-client  0.8.0
prompt-toolkit     3.0.5
Protego            0.1.16
pure-sasl          0.6.2
py4j               0.10.9
pyasn1             0.4.8
pyasn1-modules     0.2.8
pycparser          2.20
PyDispatcher       2.0.5
pyecharts          1.7.1
Pygments           2.6.1
PyHamcrest         2.0.2
PyHDFS             0.3.1
PyHive             0.6.2
pymongo            3.10.1
PyMySQL            0.9.3
PyNaCl             1.4.0
pyOpenSSL          19.1.0
pyparsing          2.4.7
pyrsistent         0.16.0
pyspark            3.0.0
python-dateutil    2.8.1
pytz               2020.1
pywin32            228
pywinpty           0.5.7
PyYAML             5.3.1
pyzmq              19.0.1
queuelib           1.5.0
requests           2.23.0
retrying           1.3.3
scal               1.0.0
Scrapy             2.1.0
Send2Trash         1.5.0
service-identity   18.1.0
setuptools         49.1.0
shellescape        3.8.1
simplejson         3.17.0
six                1.15.0
snapshot-phantomjs 0.0.3
soupsieve          2.0.1
sqlparse           0.3.1
terminado          0.8.3
testpath           0.4.4
thrift             0.9.3
thrift-sasl        0.2.1
thriftpy           0.3.9
thriftpy2          0.4.11
tornado            6.0.4
traitlets          4.3.3
Twisted            20.3.0
Unit               0.2.2
urllib3            1.25.9
w3lib              1.22.0
wcwidth            0.2.5
webencodings       0.5.1
wheel              0.34.2
wordcloud          1.7.0
zope.interface     5.1.0

到此实训结束,感谢大家观看

ps:推荐大家使用我的虚拟机进行测试,某些功能如远程连接hive需要特定的jar包,远程连接也要特定的jar包,sqoop也需要jar包

链接: https://pan.baidu.com/s/1MfXSx5qIjQfC9nXDaRvrCg 提取码: qg5g
不确定全不全,也不知道放在哪里。忘了qwq

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

相关文章

  1. DOS命令与Linux

    1,开始-运行或win+R后输入cmd:进入dos界面;命令不严格区分大小写(区别于Linux命令)2,命令 + /?:显示命令的意义和使用方法,参数选项3、定时关机:win+R弹出命令框:shutdown -r -t +时间(秒)4、上下箭头:快速定位到上下一个输入过的命令;右键-标记,左键选中即可复…...

    2024/4/23 10:53:23
  2. 从零教你搭建阿里云托管版k8s集群(一)

    预备知识:对k8s的运行原理有一定了解对阿里云的eip,snat和基本网络知识有一定了解,熟悉linux操作 ### 准备条件两台及以上ecs服务器阿里云账户余额100元以上(阿里云要求)阿里云oss一个(oss和ecs在一个区域最好,目前40g一年才9块钱,足够用)首先阿里云创建k8s集群要求至…...

    2024/4/26 21:21:13
  3. Observability:使用 Elastic Agent 和 Ingest Manager 简化数据导入 (一)

    在 Elastic 7.8 版本的发布中,我们很高兴地宣布一项重大改进,该改进将使将数据发送到 Elastic Stack 变得更加容易。 首先,我们将启动我们的 Elastic Agent 的实验版本,这是一个统一的代理,可简化安装和管理。其次,我们将启动 Ingest Manager,这是 Kibana 中的新应用程序…...

    2024/4/26 5:54:33
  4. 2020牛客暑期多校训练营(第二场)Cover the Tree

    Cover the Tree 题目大意: 给定一个无根树,你需要选择最少数量的链,使得树上的所有边都被至少一条链覆盖。输出最少数量,和对应的解。如果有多解,输出任意一个即可。** 输入: 第一行:n (1≤n≤210^5) 接下来n-1行每行包含两个整数u,v(1 ≤u < v ≤n)表示节点u和v之间…...

    2024/4/9 19:02:41
  5. HRS_Ecosystem内置模块介绍3

    续HRS_Ecosystem内置模块介绍2 hrsconnect.functions.curve_functions 该模块提供多种获取/设置方法,用于访问/修改1D,Text,2D,2D-Image,Core-Data曲线类型的曲线数据。 create_well def create_well(well_name, x=0.0, y=0.0, kb_elev=0.0, surf_elev=0.0, unit=m, well_…...

    2024/4/25 7:59:38
  6. 继续畅通工程【浙江大学复试上机题】【并查集+Kruskal算法】

    题目描述省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建道路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全省畅通需要的…...

    2024/4/23 16:23:09
  7. Unity 根骨骼动画出错时的排查点

    转载自: 阿里云社区. 1.查看模型的rig:如果采用Generic方法,Rig里面一定要看Root node设置的是否正确,如果使用generic方法,这就是每帧计算出来的赋予一个位移的根骨骼 2.查看动作的rig:看看是否共用了模型的那个avatart 3.查看动作的animation设置:在xz/Y/rotation上分别…...

    2024/4/20 5:59:21
  8. ST意法半导体2020新方案:低功耗+人机交互+无线

    ST意法半导体在2020年慕尼黑上海电子展发布的低功耗+人机交互+无线最新方案 详情:https://www.icxbk.com/download/detail/48879.html...

    2024/4/26 0:43:46
  9. STL学习总结(1)

    STL学习总结(1)一、STL基本语法二、string容器string的初始化赋值操作取值操作拼接操作查找操作string替换string比较大小子串操作插入和删除三、vector容器初始化常用赋值操作大小操作vector存取数据插入和删除swap缩减空间reserve与resize的区别 STL(Standard Template Lib…...

    2024/4/24 10:50:33
  10. IntelliJ IDEA、Eclipse使用教程

    快速搭建一个maven-webapp项目:前提:环境已经安装JDK,Maven,Tomcathttps://www.cnblogs.com/yjd_hycf_space/p/7483921.html前提:已安装本地tomcat并配置:1、新建maven模板项目:2、配置本地maven:3、整合Tomcat:(maven标准目录:在main下新建java和resources目录,并…...

    2024/4/18 4:00:10
  11. Hadoop相关常去的网站

    转载:https://blog.csdn.net/weixin_30569033/article/details/98406863学习hadoop常去网址; hadoop邮件列表信息查询http://www.search-hadoop.com 简介:hadoop邮件列表都是hadoop用户和开发者的提问和讨论的邮件列表,里面大量问题,和解决方案,可以帮助自己解决工作中遇…...

    2024/4/27 1:46:18
  12. 数学建模学习记录——聚类算法

    数学建模学习记录——聚类算法一、聚类分析的一些概念数据的一般的格式样品与样品之间的常用距离(样品i与样品j)指标与指标之间的常用“距离”(指标i与指标j)类与类之间的常用距离二、K-means聚类算法K-means聚类算法概述:K-means++聚类算法Spss的聚类分析三、系统(层次)…...

    2024/4/9 18:52:44
  13. Element UI 回到顶部el-backtop组件的教程或问题

    el-backtop组件使用 <template><div class="container"><div style="height:800px;">...//主要内容</div>//回到顶部组件 target:回到指定类的顶部 visibility-height:滚动长度<el-backtop target=".container" vi…...

    2024/4/19 3:15:00
  14. maven,tomcat详解

    https://www.cnblogs.com/whgk/p/7112560.htmlhttps://juvenshun.iteye.com/blog/213959 Maven:基于项目对象模型(POM),通过一小段描述信息来管理项目的构建、报告、和文档的软件项目管理工具。核心功能是合理叙述项目之间的依赖关系。1、安装Maven:- 前提是环境已安装JD…...

    2024/4/20 8:18:08
  15. 仿电商App:笔记(六): 登录、注册功能开发(ORM框架-GreenDao)

    目录1、注册UI及验证逻辑实现1.1 注册页面逻辑实现1.2 验证效果2、登录UI及验证逻辑实现2.1 登录页面逻辑实现2.2 验证效果3、服务器数据简单介绍与基于GreenDao的数据库框架设计3.1 使用Apache+PHP搭建服务器,读取本地的json数据3.2 数据持久化--GreenDAO(使用单例模式确保操…...

    2024/4/18 9:14:19
  16. mysql使用存储过程&函数实现批量插入

    以下是我为了自己学方便建的笔记,都是在其他博主的主页下看到的,自学笔记,有不对的可以指出表结构如下:create table dept(id int unsigned primary key auto_increment,// ID列为无符号整型,该列值不可以为空,并不可以重复,而且自增。 deptno mediumint unsigned not …...

    2024/4/9 19:02:33
  17. redis分布式锁

    解决Redis分布式锁业务代码超时导致锁失效问题转载自:https://my.oschina.net/u/4164047/blog/32104621、redis分布式锁的基本实现redis加锁命令:SETNX resource_name my_random_value PX 30000 这个命令的作用是在只有这个key不存在的时候才会设置这个key的值(NX选项的作用…...

    2024/4/14 9:27:13
  18. redis持久化之AOF(Append Only File)及其总结

    1.是什么?以日志的形式来记录每个写操作,将redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作2.Aof保存的是…...

    2024/4/16 18:34:09
  19. Java集合类之HashMap

    综述 HashMap是一个存储键值对(Key-value)的集合,每一组键值对也叫做Entry,HashMap数组的初始化都是null。 1、成员变量 //初始化容量为16,这个必须是2的幂 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; //负载因子 static final float DEFAULT_LOAD_FACTOR …...

    2024/4/25 0:22:50
  20. Glide使用总结

    简介优点与使用环境生命周期相绑定:RequestManagerFragment & SupportRequestManagerFragment内存的三级缓存池:LruMemoryResources, ActiveResources, BitmapPool内存复用机制:BitmapPool为什么要绑定生命周期可以实现网络请求根据生命周期而暂停、执行、恢复、释放等可…...

    2024/4/24 7:25:23

最新文章

  1. PT Application Inspector 4.5 (Linux) - 静态、动态和交互式应用程序安全测试

    PT Application Inspector 4.5 (Linux) - 静态、动态和交互式应用程序安全测试 唯一一款提供高质量分析和便捷工具以自动确认漏洞的源代码分析器 请访问原文链接&#xff1a;PT Application Inspector 4.5 (Linux) - 静态、动态和交互式应用程序安全测试&#xff0c;查看最新…...

    2024/4/27 12:23:31
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 用html实现在页面底部养鱼的效果

    <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>在网页底部养鱼</title><link rel"stylesheet" href"./style.css"> </head> <body> <div id"fi…...

    2024/4/24 17:02:47
  4. 车载以太网AVB交换机 gptp透明时钟 8口 千兆/百兆可切换 SW1100TE

    SW1100TE车载以太网交换机 一、产品简要分析 8端口千兆和百兆混合车载以太网交换机&#xff0c;其中包含2个通道的1000BASE-T1和5通道100BASE-T1泰科MATEnet接口引出,1个通道1000BASE-T标准以太网(RJ45接口)&#xff0c;可以实现车载以太网多通道交换&#xff0c;车载以太网网…...

    2024/4/25 14:17:16
  5. 416. 分割等和子集问题(动态规划)

    题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义&#xff1a;dp[i][j]表示当背包容量为j&#xff0c;用前i个物品是否正好可以将背包填满&#xff…...

    2024/4/27 1:53:53
  6. 【Java】ExcelWriter自适应宽度工具类(支持中文)

    工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...

    2024/4/27 3:39:11
  7. Spring cloud负载均衡@LoadBalanced LoadBalancerClient

    LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon&#xff0c;直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件&#xff0c;我们讨论Spring负载均衡以Spring Cloud2020之后版本为主&#xff0c;学习Spring Cloud LoadBalance&#xff0c;暂不讨论Ribbon…...

    2024/4/26 8:22:40
  8. TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案

    一、背景需求分析 在工业产业园、化工园或生产制造园区中&#xff0c;周界防范意义重大&#xff0c;对园区的安全起到重要的作用。常规的安防方式是采用人员巡查&#xff0c;人力投入成本大而且效率低。周界一旦被破坏或入侵&#xff0c;会影响园区人员和资产安全&#xff0c;…...

    2024/4/26 11:10:01
  9. VB.net WebBrowser网页元素抓取分析方法

    在用WebBrowser编程实现网页操作自动化时&#xff0c;常要分析网页Html&#xff0c;例如网页在加载数据时&#xff0c;常会显示“系统处理中&#xff0c;请稍候..”&#xff0c;我们需要在数据加载完成后才能继续下一步操作&#xff0c;如何抓取这个信息的网页html元素变化&…...

    2024/4/27 3:39:08
  10. 【Objective-C】Objective-C汇总

    方法定义 参考&#xff1a;https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...

    2024/4/27 3:39:07
  11. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

    &#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】&#x1f30f;题目描述&#x1f30f;输入格…...

    2024/4/27 3:39:07
  12. 【ES6.0】- 扩展运算符(...)

    【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数&#xff0…...

    2024/4/26 6:06:14
  13. 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?

    文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕&#xff0c;各大品牌纷纷晒出优异的成绩单&#xff0c;摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称&#xff0c;在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁&#xff0c;多个平台数据都表现出极度异常…...

    2024/4/26 17:59:13
  14. Go语言常用命令详解(二)

    文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令&#xff0c;这些命令可以帮助您在Go开发中进行编译、测试、运行和…...

    2024/4/26 22:35:59
  15. 用欧拉路径判断图同构推出reverse合法性:1116T4

    http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b&#xff0c;我们在 a i a_i ai​ 和 a i 1 a_{i1} ai1​ 之间连边&#xff0c; b b b 同理&#xff0c;则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然&#xff0…...

    2024/4/26 17:00:23
  16. 【NGINX--1】基础知识

    1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息&#xff0c;并安装一些有助于配置官方 NGINX 软件包仓库的软件包&#xff1a; apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...

    2024/4/27 3:39:03
  17. Hive默认分割符、存储格式与数据压缩

    目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限&#xff08;ROW FORMAT&#xff09;配置标准HQL为&#xff1a; ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...

    2024/4/26 9:43:47
  18. 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

    文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中&#xff0c;传感器和控制器产生大量周…...

    2024/4/26 9:43:47
  19. --max-old-space-size=8192报错

    vue项目运行时&#xff0c;如果经常运行慢&#xff0c;崩溃停止服务&#xff0c;报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中&#xff0c;通过JavaScript使用内存时只能使用部分内存&#xff08;64位系统&…...

    2024/4/27 1:03:20
  20. 基于深度学习的恶意软件检测

    恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞&#xff0c;例如可以被劫持的合法软件&#xff08;例如浏览器或 Web 应用程序插件&#xff09;中的错误。 恶意软件渗透可能会造成灾难性的后果&#xff0c;包括数据被盗、勒索或网…...

    2024/4/27 3:22:12
  21. JS原型对象prototype

    让我简单的为大家介绍一下原型对象prototype吧&#xff01; 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定&#xff0c;每一个构造函数都有一个 prototype 属性&#xff0c;指向另一个对象&#xff0c;所以我们也称为原型对象…...

    2024/4/26 21:29:56
  22. C++中只能有一个实例的单例类

    C中只能有一个实例的单例类 前面讨论的 President 类很不错&#xff0c;但存在一个缺陷&#xff1a;无法禁止通过实例化多个对象来创建多名总统&#xff1a; President One, Two, Three; 由于复制构造函数是私有的&#xff0c;其中每个对象都是不可复制的&#xff0c;但您的目…...

    2024/4/27 3:39:00
  23. python django 小程序图书借阅源码

    开发工具&#xff1a; PyCharm&#xff0c;mysql5.7&#xff0c;微信开发者工具 技术说明&#xff1a; python django html 小程序 功能介绍&#xff1a; 用户端&#xff1a; 登录注册&#xff08;含授权登录&#xff09; 首页显示搜索图书&#xff0c;轮播图&#xff0…...

    2024/4/26 23:53:24
  24. 电子学会C/C++编程等级考试2022年03月(一级)真题解析

    C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...

    2024/4/26 9:43:45
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57