大数据项目开发hadoop集群搭建 python爬取前程无忧招聘网信息以及进行数据分析和数据可视化
大数据项目开发实训报告
- 一、Hadoop环境搭建
- 1: jdk的安装
- 1):在linux系统下的opt目录下创建software 和 module 两个目录
- 2):利用filezilla工具将 jdk、hadoop-2.5.0-cdh5.3.6.tar.gz 导入到opt目录下面的software文件夹下面
- 3)在linux下查看是否上传成功
- 4)解压jdk到/opt/module目录下
- 5)配置jdk环境变量
- 2: Hadoop
- 1)解压安装文件到module下面
- 2)配置/opt/module/hadoop-2.5.0-cdh5.3.6/etc/hadoop中的hadoop-env.sh
- 3)配置core-site.xml
- 4)配置:hdfs-site.xml
- 5)Slaves(配置哪几台是datanode)
- 6) 配置yran
- 7)mapreduce
- 3: zookeeper搭建
- 1)上传zookeeper-3.47.tar.gz到hadoop101主机software目录下
- 2)解压文件到module下:
- 3)在hadoop101下 进入zookeeper-3.4.7.tar.gz主目录下的conf目录 复制配置文件并配置
- 4)启动zookeeper
- 4: 分发文件
- 5: 免密登录
- 1)无秘钥配置
- 2)生成公钥和私钥
- 3)将公钥拷贝到要免密的目标机器上即可
- 6: 集群测试
- 1) 启动
- 二、数据爬取
- 1:MongoDB安装
- 1)下载页面
- 2)安装:
- 3)安装可视化工具RObo 3T:
- 2:创建项目
- 3:定义items.py
- 4: 编写spider文件
- 5:存储数据到MongoDB
- 6:设置setting.py
- 三、数据存储
- 1:导出数据
- 2:安装fluem
- 1) 上传apache-flume-1.6.0-bin.tar.gz 到hadoop101的software下
- 2)解压:
- 3)在conf目录下 创建一个配置文件(名字自取即可)
- 4)编辑配置文件
- 3上传数据
- 1) 启动hadoop集群
- 四、Hive和sqoop
- 1:Hive环境搭建
- 1) 上传hive-0.13.1-cdh5.3.6.tar.gz 到hadoop101的software
- 2)解压HIve到安装目录:
- 3)重命名配置文件
- 4)修改hive-env.sh
- 5)安装Mysql
- 6)配置Mysql
- 7) 修改hive-site.xml
- 8)修改hive-log4j.properties
- 9)拷贝数据库驱动包到Hive根目录下的lib文件夹(hive去操作MySQL需要用到)
- 10)启动Hive
- 11)修改HDFS系统中关于HIve的一些目录权限
- 12)显示数据库名称以及字段名称
- 2 :sqoop搭建
- 1)上传sqoop-1.4.5-cdh5.3.6.tar.gz到hadoop101的software下
- 2)解压 到module下
- 3)配置文件
- 五、数据分析可视化
- 1: 启动hive
- 2 :新建数据库
- 3 :新建表
- 4:从本地导入数据
- 5:岗位薪资数据提取
- 1)提取三个职位的数据到新的表中
- 2)数据切分1
- 3)数据切分2
- 4)最大值 最小值 平均值
- 6、岗位需求分析
- 1)数据分析
- 2)查询结果导入到mysql
- 7、岗位薪资经验分析
- 1)数据提取
- (1)建表sjfx1
- (2)插入数据
- 2)数据切分
- (1)建表sjfx2
- (2)插入数据
- (3)第二次切分
- 3)最大最小平均值
- (1)建表
- (2)查询结果导入到mysql
- 8、 可视化
- 1)薪资水平:
- 2)岗位统计:
- 3)三年经验薪资水平:
一、Hadoop环境搭建
"三台虚拟机 主机名分别为: hadoop101 hadoop102 hadoop103"
集群规划
hadoop101 hadoop102 hadoop103
修改主机名
进入linux下的/etc/hostname
在文件中写入 hadoop101
其他两台同理即可
1: jdk的安装
1):在linux系统下的opt目录下创建software 和 module 两个目录
mkdir module
mkdir software
2):利用filezilla工具将 jdk、hadoop-2.5.0-cdh5.3.6.tar.gz 导入到opt目录下面的software文件夹下面
3)在linux下查看是否上传成功
4)解压jdk到/opt/module目录下
tar -zxvf jdk-8u121-linux-x64.gz -C /opt/module/
5)配置jdk环境变量
(1)获取jdk的路径pwd(2) 测试jdk是否安装成功
java-version
2: Hadoop
1)解压安装文件到module下面
tar -zxf hadoop-2.5.0-cdh5.3.6.tar.gz -C /opt/module/
2)配置/opt/module/hadoop-2.5.0-cdh5.3.6/etc/hadoop中的hadoop-env.sh
(1)linux系统中获取jdk的路径
echo $JAVA_HOME
(2)修改hadoop-env.sh中的JAVA_HOME路径:
export JAVA_HOME=/opt/module/jdk1.8.0_121
3)配置core-site.xml
<!-- 指定HDFS中NameNode的地址 -->
<property><name>fs.defaultFS</name><value>hdfs://hadoop101:9000</value>
</property><!-- 指定hadoop运行时产生文件的存储目录 -->
<property><name>hadoop.tmp.dir</name><value>/opt/module/hadoop-2.5.0-cdh5.3.6/data/tmp</value>
</property>
4)配置:hdfs-site.xml
<!-- 指定HDFS副本的数量 --><property><name>dfs.replication</name><value>3</value></property><property><name>dfs.namenode.secondary.http-address</name><value>hadoop103:50090</value></property>
5)Slaves(配置哪几台是datanode)
hadoop101 hadoop102hadoop103
6) 配置yran
(1) yran.enx.sh
export JAVA_HOME=/opt/module/jdk1.8.0_121
(2) yarn.site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<!-- reducer获取数据的方式 --><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><!-- 指定YARN的ResourceManager的地址 --><property><name>yarn.resourcemanager.hostname</name><value>hadoop102</value></property></configuration>
7)mapreduce
(1)mapred-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_121
(2)mapred-site.xml
<configuration>
<!-- 指定mr运行在yarn上 --><property><name>mapreduce.framework.name</name><value>yarn</value></property></configuration>
3: zookeeper搭建
1)上传zookeeper-3.47.tar.gz到hadoop101主机software目录下
2)解压文件到module下:
tar -zxvf zookeeper-3.4.7.tar.gz /opt/module
3)在hadoop101下 进入zookeeper-3.4.7.tar.gz主目录下的conf目录 复制配置文件并配置
cp zoo_sampl.cfg zoo.cfg
vi zoo.cfg
dataDir=/opt/software/zookeeper-3.4.7/tmp
clientPort=2181
server.1=192.168.60.101:2888:3888
server.2=192.168.60.102:2888:3888
server.3=192.168.60.103:2888:3888
在hadoop101的zookeeper-3.4.7主目录下面,创建目录tmp
mkdir tmp
进入到tmp目录创建myid文件 编辑内容为 1
分发文件之后 在hadoop102 和103 上进行同样的操作 (在hadoop101的zookeeper-3.4.7主目录下面,创建目录tmp 在tmp下创建myid 并编辑内容为2和3)
4)启动zookeeper
在每一台机器上都要启动zk的服务端
进入zookeeper-3.4.7:
bin/zkServer.sh start
4: 分发文件
利用scp将 hadoop101中/opt/module 和/opt/softwae 文件拷贝到hadoop102 和hadoop103上
scp -r /opt/module/ root@hadoop102:/optscp -r /opt/software/ root@hadoop102:/optscp -r /opt/module/ root@hadoop103:/optscp -r /opt/software/ root@hadoop103:/opt
5: 免密登录
SSH无密码登录
1)无秘钥配置
cd ~/.ssh
2)生成公钥和私钥
ssh-keygen -t rsa
然后连续敲三个回车 就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
3)将公钥拷贝到要免密的目标机器上即可
ssh-copy-id 192.168.60.101(目标机器的ip)
6: 集群测试
1) 启动
如果是第一次启动 需要 在hadoop-2.5.0-cdh5.3.6格式化namenode
bin/hdfs namenode -format
(1)启动HDFS:
sbin/start-yarn.sh
可以用jps命令查看是否启动成功
(2)启动yarn
sbin/start-yarrn.sh
注意:Namenode和ResourceManger如果不是同一台机器,不能在NameNode上启动 yarn,应该在ResouceManager所在的机器上启动yarn。 所以在这里我们需要在hadoop102 上启动yarn
二、数据爬取
1:MongoDB安装
1)下载页面
https://www.mongodb.com/(下载版本不要太新也不要太旧)
2)安装:
在左下角出现install MongoDB Compass(可视化工具)的时候,将前面的√去掉。如果不去掉,安装过程十分漫长。后续可以重新安装可视化工具
创建数据库存储目录 :F:\MongoDB\data
启动MongoDB服务器
cd E:\MongoDB\Server\4.0\bin
mongod.exe --dbpath = E:\MongoDB\Server\4.0\data\log -- logpath = E:\MongoDB\Server\4.0\data\log
3)安装可视化工具RObo 3T:
下载地址:https://robomongo.org
2:创建项目
打开cmd命令行;
创建爬虫项目:
scrapy satrtproject scrapyshixun
cd scrapyshixun
scrapy genspider -t crawl qcwy 51job.com
3:定义items.py
4: 编写spider文件
5:存储数据到MongoDB
编写piplines.py:
6:设置setting.py
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36'
ROBOTSTXT_OBEY = False
DOWNLOAD_DELAY =1
COOKIES_ENABLED = FalseITEM_PIPELINES = {'scrapyshixun.pipelines.ScrapyshixunPipeline': 300,
}
三、数据存储
1:导出数据
MongoDB中的数据:
从MongoDB中导出数据 :
打开cmd命令行
进入到MongoDB的bin目录下:
E:\MongoDB\Server\4.0\bin
mongoexport -d 数据库名 -c 表名 --csv -f 字段名称 -o 文件名
2:安装fluem
1) 上传apache-flume-1.6.0-bin.tar.gz 到hadoop101的software下
2)解压:
tar -zxvf apache-flume-1.6.0-bin.tar.gz /opt/module
3)在conf目录下 创建一个配置文件(名字自取即可)
4)编辑配置文件
#配置Agent a1 的组件
a1.sources=r1
a1.sinks=s1
a1.channels=c1
#描述/配置a1的source1
a1.sources.r1.type=spooldir
a1.sources.r1.spoolDir = /opt/data/
#描述sink
a1.sinks.s1.type=HDFS
a1.sinks.s1.hdfs.path=hdfs://192.168.60.101:9000/flume
#上传文件的前缀
a1.sinks.s1.hdfs.filePrefix = upload-
#是否按照时间滚动文件夹
a1.sinks.s1.hdfs.round = true
#是否使用本地时间戳
a1.sinks.s1.hdfs.useLocalTimeStamp = true
#设置文件类型 可支持压缩
a1.sinks.s1.hdfs.fileType=DataStream
#多久生成一个新的文件
a1.sinks.s1.hdfs.rollInterval = 30
#设置每个文件的滚动大小大概是128M
a1.sinks.s1.hdfs.rollSize = 134217700
#文件的滚动与Event数量无关
a1.sinks.s1.hdfs.rollCount = 0#描述内存channel
a1.channels.c1.type=memory
a1.channels.c1.capacity=1000
a1.channels.c1.transactionCapacity=100
#位channel 绑定 source和sink
a1.sources.r1.channels=c1
a1.sinks.s1.channel=c1
如果报错 是因为flume缺少相关hadoop的依赖jar包 将hadoop的jar包都拷贝到fluem的lib目录下
3上传数据
1) 启动hadoop集群
进入fluem的bin目录下
./flume-ng agent --conf ../conf --conf-file ../conf/qcwy_template.conf --name a1 -Dflume.root.logger=INFO,console
启动后再开启一个窗口 进入到预先建立好的fluemdata下 把qcwy.txt上传到此目录下
监控变化:
HDFS上的结果:
四、Hive和sqoop
1:Hive环境搭建
1) 上传hive-0.13.1-cdh5.3.6.tar.gz 到hadoop101的software
2)解压HIve到安装目录:
tar -zxf /opt/software/hive-0.13.1-cdh5.3.6.tar.gz -C /opt/module
3)重命名配置文件
mv hive-default.xml.template hive-site.xml
mv hive-env.sh.template hive-env.sh
4)修改hive-env.sh
JAVA_HOME=/opt/module/jdk1.8.0_121
HADOOP_HOME=/opt/module/hadoop-2.5.0-cdh5.3.6
#hive启动加载的配置文件目录
export HIVE_CONF_DIR=/opt/module/hive-0.13.1-cdh5.3.6/conf
5)安装Mysql
su - root
yum -y install mysql mysql-server mysql-devel
wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpmyum -y install mysql-community-server
如果使用离线绿色版本(免安装版本)需要手动初始化Mysql数据库
6)配置Mysql
(1)开启Mysql服务
service mysqld start
(2) 设置root用户密码
mysqladmin -u root password ‘root’
(3) 为用户以及其他机器节点授权(让所有机器都有Mysql数据库的权限)
进入MySQL: mysql -u root -p
mysql> grant all on . to root@‘hadoop102’ identified by ‘123456’;
grant all on . to root@‘hadoop103’ identified by ‘000000’;
给mysqlserver也需要授权(也就是自身也需要授权)
7) 修改hive-site.xml
<property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://hadoop101:3306/metastore?createDatabaseIfNotExist=true</value><description>JDBC connect string for a JDBC metastore</description></property><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value><description>Driver class name for a JDBC metastore</description></property><property><name>javax.jdo.option.ConnectionUserName</name><value>root</value><description>username to use against metastore database</description></property><property><name>javax.jdo.option.ConnectionPassword</name><value>root</value><description>password to use against metastore database</description></property>
8)修改hive-log4j.properties
hive.log.dir=/opt/module/hive-0.13.1-cdh5.3.6/logs
9)拷贝数据库驱动包到Hive根目录下的lib文件夹(hive去操作MySQL需要用到)
cp -a mysql-connector-java-5.1.27-bin.jar /opt/module/hive-0.13.1-cdh5.3.6/lib/
10)启动Hive
bin/hive
11)修改HDFS系统中关于HIve的一些目录权限
/opt/module/hadoop-2.5.0-cdh5.3.6/bin/hadoop fs -chmod 777 /tmp/
/opt/module/hadoop-2.5.0-cdh5.3.6/bin/hadoop fs -chmod 777 /user/hive/warehouse
12)显示数据库名称以及字段名称
hive-site.xml
<!-- 是否在当前客户端中显示查询出来的数据的字段名称 --><property><name>hive.cli.print.header</name><value>true</value><description>Whether to print the names of the columns in query output.</description></property><!-- 是否在当前客户端中显示当前所在数据库名称 --><property><name>hive.cli.print.current.db</name><value>true</value><description>Whether to include the current database in the Hive prompt.</description></property>
2 :sqoop搭建
1)上传sqoop-1.4.5-cdh5.3.6.tar.gz到hadoop101的software下
2)解压 到module下
tar -zxf /opt/software/sqoop-1.4.5-cdh5.3.6.tar.gz -C /opt/module
3)配置文件
(1)进入sqoop-env.sh
#export HADOOP_COMMON_HOME
export HADOOP_COMMON_HOME=/opt/module/hadoop-2.5.0-cdh5.3.6
#Set path to where hadoop-*-core.jar is available
#export HADOOP_MAPRED_HOME
export HADOOP_MAPRED_HOME=/opt/module/hadoop-2.5.0-cdh5.3.6
#Set the path to where bin/hive is available
#export HIVE_HOME
export HIVE_HOME=/opt/modulehive-0.13.1-cdh5.3.6#Set the path for where zookeper config dir is
#export ZOOCFGDIR
export ZOOCFGDIR=/opt/module/zookeeper-3.4.5-cdh5.3.6
export ZOOKEEPER_HOME=/opt/module/zookeeper-3.4.5-cdh5.3.6
(2)拷贝jdbc驱动到sqoop的lib下
cp -a mysql-connector-java-5.1.27-bin.jar /opt/modules/sqoop-1.4.5-cdh5.3
(3)启动sqoop
bin/sqoop
(4) 测试sqoop是否能够连接成功
bin/sqoop list-databases --connect jdbc:mysql://hadoop101:3306/metastore --username root --password root
五、数据分析可视化
1: 启动hive
bin/hive
2 :新建数据库
create database db_qcwy;
use db_qcwy;
3 :新建表
create table if not exists db_qcwy_demo(paylevel string,jobtitle string,company string,workexperience string,educational string ,jobskill string,jobcontent string)row format delimited fields terminated by ',';
4:从本地导入数据
load data local inpath '/opt/data/qcwy.txt' into table db_qcwy_demo;
5:岗位薪资数据提取
1)提取三个职位的数据到新的表中
(1)新建一个名为fenxi1的表来存储提取出来的数据:
create table fenxi1 as select jobname,salary from db_qcwy_demo where jobname like '%数据分析%' and salary like '%千/月%';
查询前十条数据:
select * from fenxi1 limit 10;
(2)新建一个名为caiji1的表来存储提取出来的数据:
create table caiji1 as select jobname,salary from db_qcwy_demo where jobname like '%数据采集%' and salary like '%千/月%';
查询前十条数据:
select * from caiji1 limit 10;
(3)新建一个名为kaifa1的表来存储提取出来的数据:
create table kaifa1 as select jobname,salary from db_qcwy_demo where jobname like '%大数据开发%' and salary like '%千/月%';
查询前十条数据:
select * from kaifa1 limit 10;
2)数据切分1
(1) 建立一个新表:
数据采集:
create table caiji2(jobname string,min_salary int, max_salary string)row format delimited fields terminated by '\t';
数据分析:
create table fenix2(jobname string,min_salary int, max_salary string)row format delimited fields terminated by '\t';
大数据开发:
create table kaifa2(jobname string,min_salary int, max_salary string)row format delimited fields terminated by '\t';
(2)插入第一次切分出来的数据
数据采集:
insert into table caiji2 select jobname,Split(caiji1.salary,'\-')[0],Split(caiji1.salary,'\-')[1] from caiji1;
数据分析:
insert into table fenxi2 select jobname,Split(fenxi1.salary,'\-')[0],Split(fenxi1.salary,'\-')[1] from fenxi1;
数据开发:
insert into table kaifa2 select jobname,Split(kaifa1.salary,'\-')[0],Split(kaifa1.salary,'\-')[1] from kaifa1;
3)数据切分2
(1)数据采集
建立表caiji3
create table caiji3(jobname string,min_salary int, max_salary int)row format delimited fields terminated by '\t';
插入数据
insert into table caiji3 select jobname,min_salary,Split(caiji2.max_salary,'\千')[0]as max_salary from caiji2;
查看结果:
数据分析
建立表fenxi3
create table fenxi3(jobname string,min_salary int, max_salary int)row format delimited fields terminated by '\t';
插入数据
insert into table fenxi3 select jobname,min_salary,Split(fenxi2.max_salary,'\千')[0]as max_salary from fenxi2;
查看结果:
数据开发:
建立表kaifa3:
create table kaifa3(jobname string,min_salary int, max_salary int)row format delimited fields terminated by '\t';
插入数据:
insert into table kaifa3 select jobname,min_salary,Split(kaifa2.max_salary,'\千')[0]as max_salary from kaifa2;
查看结果:
4)最大值 最小值 平均值
数据采集:
建立表caiji4
create table caiji4(jobname string,min_salary int, max_salary int, avg_salary int)row format delimited fields terminated by '\t';
求出每一条数据的平均值:
insert into table caiji4 select jobname,min_salary,max_salary ,((max_salary + min_salary) /2 )as avg_salary from caiji3;
建立表caiji5用来存储最大值最小值平均值
create table caiji5(min_salary int,max_salary int,avg_salary int)row format delimited fields terminated by '\t';
插入数据 采用round函数限制小数位数
insert into table caiji5 select min(caiji4.min_salary), max(caiji4.max_salary),ROUND(avg(caiji4.avg_salary),2) from caiji4;
查询结果导入到mysql
sqoop export --connect "jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8" --username root --password root --table caiji5 --fields-terminated-by '\001' --export-dir '/user/hive/warehouse/db_qcwy/caiji5';
(这里讲的是"数据采集"这个职位的分析过程,"数据分析"和"数据开发"两个职位和数据分析的步骤一样 在这里也就不做赘述了)
6、岗位需求分析
1)数据分析
(1)成都
create table fxcd (count int) row format delimited fields terminated by '\t';
insert into table fxcd select count(*) from db_qcwy_demo where jobname like '%数据分析%' and address like '%成都%'
(2)上海
create table fxsh (count int) row format delimited fields terminated by '\t';
insert into table fxcd select count(*) from db_qcwy_demo where jobname like '%数据分析%' and address like '%上海%'
(3)深圳
create table fxsz (count int) row format delimited fields terminated by '\t';
insert into table fxcd select count(*) from db_qcwy_demo where jobname like '%数据分析%' and address like '%深圳%'
(4)广州
create table fxgz (count int) row format delimited fields terminated by '\t';
insert into table fxcd select count(*) from db_qcwy_demo where jobname like '%数据分析%' and address like '%广州%'
(5)北京
create table fxbj (count int) row format delimited fields terminated by '\t';
insert into table fxcd select count(*) from db_qcwy_demo where jobname like '%数据分析%' and address like '%北京%'
(6)汇总:
create table fx_all (cd_count int,sh_count int,sz_count int,gz_count_int,bj_count int) row format delimited fields terminated by '\t';
insert into table fx_all (select count from fxcd) as cd_count,(select count from fxsh) as sh_count,(select count from fxsz) as sz_count,(select count from fxgz) as gz_count,(select count from fxbj) as bj_count,;
2)查询结果导入到mysql
数据分析
sqoop export --connect "jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8" --username root --password root --table fxcd --fields-terminated-by '\001' --export-dir '/user/hive/warehouse/db_qcwy/fxcd';
(这里讲的是"数据分析"这个职位的分析过程,"数据采集"和"数据开发"两个职位和数据分析的步骤一样 在这里也就不做赘述了)
7、岗位薪资经验分析
1)数据提取
(1)建表sjfx1
create table sjfx1(jobname string,salary string,experience string)row format delimited fields terminated by '\t';
(2)插入数据
insert into table sjfx1 select db_qcwy_demo.jobname,db_qcwy_demo.salary ,db_qcwy_demo.experience from db_qcwy_demo where db_qcwy_demo.jobname like '%数据分析%' and salary like '%千/月%' and experience like'%1年经验%' or experience like'%1年经验%' or experience like'%2年经验%' or experience like'%3年经验%';
2)数据切分
(1)建表sjfx2
create table sjfx2(jobname string,min_salary int, max_salary int, experience string)row format delimited fields terminated by '\t';
(2)插入数据
insert into table sjfx2 select jobname,Split(sjfx1.salary,'\-')[0],Split(sjfx1.salary,'\-')[1] ,experience from sjfx1;
(3)第二次切分
建表sjfx3
create table sjfx3(jobname string,min_salary int, max_salary int ,experience string)row format delimited fields terminated by '\t';
插入数据
insert into table sjfx3 select jobname,min_salary,Split(sjfx2.max_salary,'\千')[0] as max_salary ,experience stringfrom sjfx2;
3)最大最小平均值
(1)建表
建表sjfx4
create table sjfx4(jobname string,min_salary int, max_salary int, avg_salary int,experience string)row format delimited fields terminated by '\t';
插入数据 求出每一条数据的平均值
insert into table sjfx4 select jobname,min_salary,max_salary ,((max_salary + min_salary) /2 )as avg_salary ,experience string from sjfx3;
建表sjfx5
create table sjfx5(min_salary int,max_salary int,avg_salary int,experience string)row format delimited fields terminated by '\t';
插入数据 求出平均值 round函数限制小数位数为2
insert into table sjfx5 select min(sjfx4.min_salary), max(sjfx4.max_salary), ROUND(avg(sjfx4.avg_salary),2) from sjfx4;
(2)查询结果导入到mysql
mysql 里面建表和hive必须一样
导入数据
sqoop export --connect "jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8" --username root --password root --table sjfx5 --fields-terminated-by '\t' --export-dir '/user/hive/warehouse/db_qcwy/sjfx5';
(这里讲的是"数据分析"这个职位的分析过程,"数据采集"和"数据开发"两个职位和数据分析的步骤一样 在这里也就不做赘述了)
8、 可视化
1)薪资水平:
数据采集:
数据分析:
数据开发:
2)岗位统计:
3)三年经验薪资水平:
按照地区划分:
大数据项目开发hadoop集群搭建 python爬取前程无忧招聘网信息以及进行数据分析和数据可视化相关推荐
- 使用Python爬取51job招聘网的数据
使用Python爬取51job招聘网的数据 进行网站分析 获取职位信息 存储信息 最终代码 进行网站分析 进入https://www.51job.com/这个网站 我在这就以python为例搜索职位跳 ...
- python爬取前程无忧招聘网站数据搭建Hadoop、Flume、Kafka、Spark用Hive做数据分析Sqoop存储到Mysql并实现可视化
文章目录 一.项目总体要求 二.环境搭建 1.安装包准备 2.安装jdk (1)查询是否安装java (2)卸载jdk (3)安装jdk (4)配置jdk环境变量 3.配置ssh免密登录 (1)进入到 ...
- 好程序员大数据笔记之:Hadoop集群搭建
好程序员大数据笔记之:Hadoop集群搭建在学习大数据的过程中,我们接触了很多关于Hadoop的理论和操作性的知识点,尤其在近期学习的Hadoop集群的搭建问题上,小细节,小难点拼频频出现,所以,今天 ...
- 大数据Hadoop集群搭建
大数据Hadoop集群搭建 一.环境 服务器配置: CPU型号:Intel® Xeon® CPU E5-2620 v4 @ 2.10GHz CPU核数:16 内存:64GB 操作系统 版本:CentO ...
- 大数据 -- Hadoop集群搭建
Hadoop集群搭建 1.修改/etc/hosts文件 在每台linux机器上,sudo vim /etc/hosts 编写hosts文件.将主机名和ip地址的映射填写进去.编辑完后,结果如下: 2. ...
- 【大数据实战】Docker中Hadoop集群搭建
目录 Docker中Hadoop集群搭建 环境 网络设置 安装docker 安装OpenSSH免密登录 Ansible安装 软件环境配置 配置hadoop运行所需配置文件 Hadoop 启动 问题 D ...
- 不看就亏系列!这里有完整的 Hadoop 集群搭建教程,和最易懂的 Hadoop 概念!| 附代码...
作者 | chen_01_c 责编 | Carol 来源 | CSDN 博客 封图 | CSDN付费下载于视觉中国 hadoop介绍 Hadoop 是 Lucene 创始人 Doug Cutting, ...
- Hadoop详解(五)——ZooKeeper详解,ZooKeeper伪分布搭建和集群搭建,Hadoop集群搭建,sqoop工具的使用
ZooKeeper简介 什么是ZooKeeper? ZooKeeper是Google的Chubby一个开源的实现,是Hadoop分布式协调服务. 它包含了一个简单的原语集,分布式应用程序可以基于它实现 ...
- Hadoop集群搭建之Hadoop组件安装
兵马未动,粮草先行 --汉语成语 系列文章目录 Hadoop集群搭建之Linux系统安装 Hadoop集群搭建之Hadoop组件安装 文章目录 系列文章目录 前言 一.IP和主机名称配置 (一)Had ...
最新文章
- GitHub防黑客新措施:弃用账密验证Git操作,改用token或SSH密钥,今晚0点执行
- python monkey_解决python调用monkeyrunner的各种各样问题
- gwt入门和进阶_GWT入门
- 解决:java.lang.NoSuchMethodException: gentle.entity.User.<init>()
- AE域名,沙漠之花阿联酋的专属域名-域名百科
- HDU - 4456 Crowd
- 顶级 Java 源码教程项目大汇总
- 2020年物联网平台调研报告
- wordpress插件_哪个是最好的WordPress画廊插件? (性能比较)
- C语言引用方式调用函数
- 教你做表格(史上最全)
- “创享杯”第一届电子数据取证线上大比武答案(自做)
- LoadRunner Error -27792: Failed to connect to server
- 爬虫—dy直播各个类别下直播数据
- 承接WEB应用开发、软件开发、网站开发
- 网络工程师能干到多大?网络工程师是不是青春饭?
- 如何使用Python实现支付宝在线支付?商家:我人傻了
- WRF应用:天气预报、模拟分析观测气温、降水、风场、水汽和湿度、土地利用变化、土壤及近地层能量水分通量、土壤、水体、植被等相关气象变量
- matlab中遍历数组元素
- 成都拓嘉启远:拼多多活动主图该怎样制作
热门文章
- Python工程师之JA3 指纹
- 荣耀手表gspro支持鸿蒙吗,数码知识:荣耀手表gspro可以装APP吗是否支持第三方软件安装...
- 深入浅出谈敏捷 - 为什么“敏捷”
- 真正的无人驾驶汽车何时实现?或许需要20年
- 网络安全之电信诈骗的正确防范
- DoYourData Super Eraser for Mac(数据永久删除工具)破解版
- python爬虫下载模块_python爬虫——下载ted视频
- 在MFC对话框中显示图片的三种方法(有两种使用OpenCv)
- 【我所認知的BIOS】—SMM (SYSTEM MANAGEMENT INTERRUPT )
- 游戏人工智能之状态驱动智能体改进(三)