11月9号才考完架构师考试,现在想把两次比赛的经历和经验总计一下。
比赛内容:
内容不多,当时数据分析没有做好,数据可视化遇到了一点小问题没有解决,导致基本后面没怎么拿分。
我主要负责的部分是Hive的的数据清洗,和数据可视化,当初要是知道数据分析和数据可视化连在一起,就会认真搞搞数据数据分析了,悔不该当初啊,后来特别不甘心,一直好好搞了python的数据分析,和数据可视化,本人觉得这部分很简单,真的小白也可以入门,我博客中有数据分析和数据可视化的简单用法。其实个人感觉pyecharts更简单一点,但是竞赛不给浏览器你就凉了,所以我幸好准备了两个方式,一个是pyecharts和matplotlib。不得不说竞赛需要准备一切可以考虑的问题。
对于2019年的比赛心里路程是一把辛酸一把泪啊,主要先介绍一下包块的部分吧,随后我会介绍如何准备,如何应对比赛问题,以及得分技巧。
第一部分:大数据平台部署
第二部分:大数据预处理部分
第三部分:大数据分析
第四部分:可视化
第五部分 人工智能
第六部分:综合题第六部分:综合题
先说一下比赛路程吧,从开始到考场时候,原定8点30开始四小时时间,但是这个时候,他们竞赛方的平台出问题了,抢修了两个多小时,然后我们就在那坐着等了两个半小时,真是无奈,算了,技术支持方,不说名字了,自己百度可以看到,当我们平台抢修好的时候,这时候立刻看题啊,我主要负责数据处理和数据分析的两个部分,这两个部分分最多,共45分。当我看过题目,大致知道如何写了,然后开始登陆他们的平台。
(这里说一个插曲,让我疯狂,ip一份名单,所有人都可以看见别人的ip密码一样,也就是说拿到ip就可以全程看别人的机子,然后自己截图到对应答题上了,因为网络赛已经选拔过了,位置按网络赛排名坐的,这个时候我们想看别人的很容易,答案只要求截图,然后就是有人频繁登录我ip我都快疯了,平台做的,我不谈,毕竟比人有别人的难处。)
这个时候我打开eclipse我尼玛真卡啊,卡到人生绝望,新建package都不行啊,然后平常都是在Windows上写好上传jar包的,没玩过linux上的eclipse,而且是需要导入相关jar进去的,说真的要不是以前搞javaWeb搞了一年多,还真不一定能搞好,然后当我建好package和搞好环境了就一个小时过去了,真想骂人,真的是卡到暴躁,想砸机子。
当我写好mr的时候,平常喜欢分不同的类写,不喜欢写成一个类里面,map,reduce,main,最好写到同一个类下面吧,这样考试节省时间,还有一个问题,就是比赛的平台的eclipse是全程一个字母一个字母敲的,不能补全,这个具体我不知道为啥,估计那上面没有写过,所以不能有补全吧,反正各种艰辛。当我写好的时候我上传到hdfs卧槽,之前都是放在hdfs才能运行,这时候我试了,发现运行不了,有一台机子有单机环境,但是怎么都运行不了,开始发现并没有错误,差点整崩溃,后来我发现,我把类都写在内部类,没有加static当然不能调用了,看了20分钟才发现错误,真是无奈,后来得知可以直接运行,我靠,这浪费了多少时间啊,然后2小时后才开始写好一个小问,真是艰难,后来开始慢慢步入正轨,开始用剩下的那两个小时赚分。
这个时候,环境搭建大二负责的,真的每一步都有问题,解压包不行,有权限,赋权限还是不行,后来问了那人是因为必须解压到别的包里面,真无语,你倒是早说这个问题啊,ssh配置也有问题,环境搭建最后hadoop都没搭建好,前提我让她练环境搭建差不多不下20次了,最后现场赛都是问题,哎,这个时候也不能怪谁了,hive也没搭建好,人工智能环境也一样,环境20分拿了估计按得分点给,只有10分了。反正各种问题,18年搭建环境一点问题没有,19年技术支持,什么问题不说清楚,问了也不说,早给我平台适应一下也好啊,哪怕就两小时,这样也能让我们适应一下,去年我们就提前适应的。今年真的各种烦心。
好在我那部分拿了应该有25分左右,然后综合题和可视化是原题,可视化是全年专科组的题目,综合题我从github找的题目练手,给另一队友负责的,然后那个要求数据处理好可视化处理,比赛时候只要数据处理一下就行了,这真是几十万分之一的概率了,不过python真是神兵利器,直接全部python解决,幸好都打印了,这边35分满分,估计拿了30分吧,因为有要求用spark但是用的python估计也会给一半的分吧。其实我个人觉得这次比赛失利了,本来其实冲前三没问题,虽然都是一等奖吧,但是我觉得做的还远远不够。
总体来说,只能自己找不足了,环境搭建失分太狠,这就是致命错误,导致hive没法写,哎,所以下年的学弟学妹参加我一定建议把环境搭建各种熟悉各种敲,从头到尾弄个几十遍。
MapReduce不是太难的,多训练分组操作。环境搭建问题,有权限问题,有自己不熟悉的问题,这部分,我只能说只有搭环境的去好好总结了,数据可视化和综合题,这个部分,就是简单的数据处理,也不是太难。多熟悉python语法,numpy和pandas的基本操作就可以了,数据可视化多熟悉matplotlib即可,最后一点,比赛这个东西,队友很重要,建议找点都是想奔省一的人去,找点努力的人,一定得找那种有野心还愿意花时间学的人,队友找好了,你就成功一大半了。不过,除了211以上的大学,在本科实验室很难寻觅到那种队友了,像我网友他们全程都在努力,每个人把每个人的部分负责的都很好,都愿意花时间,只能说学校不好,也寻觅不到最佳队友了,我有时候觉得跨校组队参加比赛还是挺好的,像我很多研究生网友找我参加研究生组的比赛,我都没时间,其实他们那个层次就知道努力的重要性了,每次都想和那些对比赛充满责任心和充满热血的人想一起比赛,一直觉得只有研究生和211大学的人,才会一起没日没夜一起努力打比赛,像我们这种二本大学参加比赛,一个人需要会全部!!!
MapReduce不是太难的,就是费时间,我都是写一个然后直接复制到另一个文件夹中,直接改,这样省时间,按照得分点了,不要急,大分拿不了,拿一部分的小分,一点一点去拿分,冷静很重要,还有就是只要能用任何方式写出结果,先把结果搞出来,这样也会有分,只要结果对,怎么也有结果分了,题目是死的人是活的。
最后说一下如何准备吧:
首先我们是暑假开始准备的,在学校留校留了一个暑假,在实验室看大数据相关视频,也是想把大数据好好搞搞吧,然后我发现大数据真的深而广,MapReduce写了不下100个,全程训练,之前还好拿过蓝桥杯(java组)省二,java也是有算法底子,建议开始先学java,再开始学MapReduce,学习一下hive数据分析,数据可视化,环境搭建。
分工吧,一个人虽然都会,可是比赛没时间让你搞,所以一定选好队友,否则宁愿不要参加比赛!准备3个月每天花个2小时到3小时基本差不多了。
最后给大家看到这篇博客留个福利:之前打完蓝桥杯创了一个群,里面会分享大数据和java的课程,免费!!!
群号:982402867
最后把2019年大数据本科组题目附上吧:
2019年安徽省大数据与人工智能应用赛题A
队伍编号:
说明:本次比赛为操作题。请在相应的虚拟机上作答,请遵守考试规则。
第一部分:大数据平台部署()
场景说明
目前,大数据技术及应用已经深入到各行各业,各高校也在积极建设信息化、智慧化校园,那么大数据中心建设必不可少,它可以服务于学校上游和下游,解决数据孤岛问题。假设现在某大学正在假设大数据中心,首先搭建大数据基础平台,用于数据存储和批量计算以及实时查询,现在请你完成Hadoop和Hive两个大数据框架的搭建及运维:
任务一、Hadoop安装()
1、配置SSH免密登录(截图成功ssh登录到子节点截图)
2、安装配置JDK(截图java -version命令)
3、解压Hadoop安装包并修改配置文件
4、配置环境变量(截图profile文件配置的关键位置)
5、拷贝hadoop到其他的机器上(截图拷贝命令)
6、初始化hadoop集群(截图执行命令)
7、启动Hadoop集群(启动成功后执行jps命令,截图主节点和子节点的进程)
任务二、配置Hive集群环境(5分)
Hive是基于Hadoop的一个数据仓库工具,其运行依赖Hadoop和Mysql,其中Hadoop为其提供Hdfs文件系统,Mysql为其提供元数据存储。下面我们开始搭建Hive。
1、Mysql安装(截图mysql搭建成功show databases命令结果界面2分)
2、Hive搭建(关键步骤截图2分)
3、启动测试hive(截图搭建成功show databases命令结果界面1分)
第二部分:大数据预处理部分(20分)
原来的日志数据格式是如下的:
appid ip mid userid login_type request status http_referer user_agent time
1、数据清洗:将 user_agent 为null的数据删除(10分)
规则一:如果数据中mid为null的数据,请过滤掉
规则二:将数据中字段login_type的值为1的全部替换为 “本系统登录”
规则三:将数据中字段status的值为0的全部替换为 ”第三方集成”
2、数据清洗:将不规整数据转化为规整数据(10)
但是如果需要按照省份来统计uv、pv,其所包含的信息还不够,我们需要对这些数据做一定的预处理,
对于其中包含的IP信息,我们需要将其对应的IP信息解析出来;
所以按照上面的分析,我们希望预处理之后的日志数据包含如下的数据字段:
appid;
ip;//通过ip来衍生出来的字段 province和city
province;
city;……………………………………….
第三部分:大数据分析(25分)
某学校有学生成绩文件:
包含学生课程名称,学生姓名,学生成绩等字段;
1、利用maperreduce操作统计每门课程的参考人数和课程平均分(5分)
2、统计每门课程参考学生的平均分,并且按课程存入不同的结果文件,要求一门课程一个结果文件,并且按平均分从高到低排序,分数保留一位小数。(10分)
任务三、基于hive的数据仓库离线计算编程(10分)
Hive作为基于hadoop的海量数据处理工具之一,在企业中有广泛应用。可以将复杂的MapReduce计算逻辑使用SQL逻辑处理。
1、 创建一个数据库,以你的组名命名,创建成功后使用use命令切换为该库,并执行set hive.cli.print.current.db=true;截图作
2、 建一个hive内部表,命名格式为:你的组名_日期_表名称,截图建表成功(2分)
3、 studentsScore.txt 导入hive表中(2分)。
4、使用sql语句统计上面创建的表中每门课程的平均分数,课程,平均分(4分)。
第四部分:可视化(15分)
数据:
有泰坦尼克号 公开数据集合数据:共有891行、12列。这代表本训练集共有891条数据,每条数据有12类信息。包括:
• PassengerId => 乘客ID
• Survived => 获救情况(1为获救,0为未获救)
• Pclass => 乘客等级(1/2/3等舱位)
• Name => 乘客姓名
• Sex => 性别
• Age => 年龄
• SibSp => 堂兄弟/妹个数
• Parch => 父母与小孩个数
• Ticket => 船票信息
• Fare => 票价
• Cabin => 客舱
• Embarked => 登船港口
要求用以上数据集合做可视化数据分析:
1、利用柱状图各乘客等级的获救与遇难情况(5分)
2、通过一张大图里分列几个小图来展示获救乘客的各种属性(10分)
了解到乘客的信息,获救人数与未获救人数比较,不同获救乘客等级之间获救人数比较,获救人员各年龄段分布,各口岸上船的乘客比较。如下:
1)柱状图展示 获救与遇难信息(3)
2)柱状图展示 乘客等级与人数信息(2)
3)散点图 展示 年龄与获救分布情况(5)
4)折线图 展示 各等级的乘客年龄分布(3)
5)柱状图 展示 各登船口岸上船人数(2)
第五部分 人工智能(10分)
目前人工智能技术广泛应用于各个场景,如分类聚类,图片图像识别,音视频检测等等。下面请你搭建人工智能中深度学习常用的框架之一 TensorFLow 并完成简单测试任务,本次实验在Linux环境下安装TensorFlow。
一、TensorFlow安装(7分)
1 Linux安装python3环境
2 使用pip3安装pip3 tensorflow
二、TensorFlow测试,将测试结果截图(3分)
进入python命令下,测试tensorflow:
import tensorflow as tf
sess = tf.Session()
hello=tf.constant('Hello,Tensorflow!')
print(sess.run(hello))
回车,若在终端下显示 Hello,Tensorflow! 则表示安装tensorflow成功
第六部分:综合题(20分)
字段含义:id,小区名称,所在区域,总价(万元),单价(元/平米),房屋户型,所在楼层,建筑面积(㎡),户型结构,套内面积(㎡),建筑类型,房屋朝向,建筑结构,装修情况,梯户比例,配备电梯,产权年限,挂牌时间,交易权属,上次交易,房屋用途,房屋年限,产权所属,抵押信息,房本备件
1、 使用Spark将数据集中”房屋用途” 是 普通住宅 并且 交易权属 是 商品房 的相关的数据提取出来,并回写到ershoufang.txt文件中,如果文件ershoufang.txt存在就删除原有的文件 (请提供编程代码)(3分)。
代码文件:
生成的结果文件:
2 使用Spark统计”房屋用途” 是 普通住宅 相关的 所在区域的占比(请提供完整代码和结果截图5分)。
代码文件:
结果截图:
4 统计关于二手房分析。(本题可以使用你擅长的编程语言和框架)
4.1 各区域二手房房源数量,按照区域对数据集中房源数量进行计算,按照房源数排序(请提供完整代码和结果截图2分)
代码文件:
结果截图:
4.1 各区域二手房平均房价,按照区域对数据集中平均总价进行计算,按照平均总价排序(请提供完整代码和结果截图2分)
代码文件:
结果截图:
4.2 计算各区域二手房单价前5条的房源信息(请提供完整代码和结果截图4分)
代码文件:
结果截图:
4.3 针对于上述指标统计,请简要结合你分析的数据结果,描述当前二手房房价以及单价的分布情况(4分)。