当前位置:首页 期刊杂志

基于行业的“Hadoop应用开发”综合性实验案例设计

时间:2024-05-07

赵向兵 张景安 山西大同大学计算机与网络工程学院

● 引言

随着信息技术的迅猛发展,大数据、云计算、人工智能、物联网、智慧制造、虚拟现实等不断渗透并重塑传统产业[1-2],大数据成为新的产业革命的核心,产业的迅速发展使高校大数据专业发展面临着新的要求与考验。目前,高校大数据专业人才培养和教学课程体系配置存在一些突出问题,如人才培养和行业需求脱节,课程设置与行业企业实际应用契合度不高;课程体系重理论轻实践,实践课程资源不足,实践案例不成体系,尤其是缺乏综合性工程实践案例,造成学生很难把理论知识转化为实践应用技能,更谈不上开发实际的工程项目。

针对以上存在的问题,笔者认为,大数据专业课程体系建设应注意以下几个方面:首先,落实“新工科”[3]工程教育理念和“产教融合,协同创新”[4]新模式,课程体系制订应面向行业需求,充分了解各领域行业知识业务流及项目需求点。例如,对于应用型本科大数据课程体系,主要是培养大数据平台的开发和设计人才,培养大数据开发项目经理和产品经理,以及大数据开发工程师和架构师;对于高职应用型大数据课程体系,主要是培养大数据运维和应用工程师。其次,在大数据专业知识体系[5]的基础上,优化课程体系内容和结构,加强实践教学资源建设,通过科学有效的案例教学将理论知识进一步深化,从而提高学生的实践能力和解决复杂问题的能力。最后,加强教师实践教学设计能力的培养,改革实验教学的形式和内容,鼓励开展综合性、创新性实验教学设计。

● 行业综合案例转换

Hadoop[6]与Spark[7]是大数据技术的基础,Hadoop应用开发课程是大数据课程体系的核心课程,在学习理论知识和技术的基础上,实践教学是提高学生动手能力的关键环节。可是,目前实践教学的实验案例以基础技术应用案例为主,缺乏综合性的实践案例,造成学生缺乏综合应用技术能力和工程实践能力。笔者认为,对于广大应用型本科院校来说,可以依托“产教融合”发展模式,在教学实践过程中,以行业项目案例为导向设计实验案例,分析职业岗位模型,结合典型的工作场景,提取出专业技能和项目经验,最后形成完整的行业项目案例,完善大数据课程体系,提高学生综合应用大数据技术的能力和解决复杂问题的能力,使学生所学和企业需求无缝对接,从而取得较好的学习效果,转化过程如图1所示。

行业案例对应表

针对各典型行业的具体特性,转化成具有行业特征大数据技术应用的行业案例,丰富综合应用项目的实验教学内容,对应关系如上表所示。

运营商行业[8]是大数据应用技术的典型行业,随着通信行业的普及,以及人们对网络的需求越来越大,运营商的在线服务需求也来越大。对于客户,借助在线服务能更加便捷地了解产品和业务办理;对于运营商,在线服务在降低成本的同时也缓解了线下业务办理的压力。下面,以运营商行业为例,设计实验案例,其中主要包括实验解决方案、技术选型、实验环境部署、实验过程和实验结果展示等内容。

● 实验解决方案和环境部署

1.解决方案

本实验案例架构采用模块化设计,分为数据预处理、数据存储模块、数据处理模块、数据ETL模块、结果展现模块,如图2所示。

图2

数据预处理模块将运营商提供的历史数据进行格式转换,数据存储模块将清洗后的数据存储到HDFS[9]上,数据处理模块通过Spark-SQL将存储在HDFS上的数据进行处理,再通过Spark和MapReduce[10]对具体的需求进行实现,数据ETL模块通过Shell脚本实现数据的获取及入库MySQL等操作,结果展示模块通过Java Web技术实现展示。

2.技术选型

数据预处理的方法主要是数据清理、数据集成、数据变换和数据归约,这些预处理技术提高了数据挖掘模式的质量,减少了数据挖掘的时间。实验案例中数据预处理模块采用Java实现,Java面向对象编程,有丰富的接口,可以实现Excel表格的操作,将Excel数据转换成TXT文件。Spark-SQL底层依托于SparkCore,并支持大多数的HQL语句,可以快速方便地对数据进行预处理操作。

数据存储模块采用HDFS架构,HDFS是一个具有高容错性分布式存储系统,提供高吞吐量的数据访问,适合大规模数据集上的应用。实验案例中将已经清洗后的数据以TXT文件的形式存储到HDFS上对应的外部表指定目录下。

数据处理模块采用MapReduce/Scala/Spark-SQL实现,MapReduce是一种编程模型框架,它方便程序员在不了解分布式并行编程的情况下,将程序运行在分布式系统上。Scala是一种函数式的面向对象的编程语言,集成了函数式编程、面向对象、异步编程、类型安全、基于JVM等特点。Spark-SQL是Spark中处理结构化数据的模块,可用于做优化信息操作,Spark-SQL支持大多数的HQL语句,可以快速、方便地对数据进行统计分析。

数据ETL模块采用Shell处理,Shell语法和结构简单,学习时可以轻松掌握,使用起来方便快捷。遇到不解问题,通过Man命令可以快速找到相关命令和参数的使用方法说明。在文本处理方面,主要采用AWK和SED两种技术,轻松实现对文本的复杂处理。在这个模块中,主要运用功能强大的命令,快速高效地完成程序开发任务。

结果展示模块采用Java Web实现,学生能随意更换可视化主题,并且可以根据定制化的产品需求,自定义展示平台的结构、布局、配色和数据图表。实验案例是大数据技术案例,专注大数据处理流程,数据可视化部分只提供数据展示的方式、方法,不再对Java Web的工程做详细介绍。

3.实验环境部署

实验平台运用普开数据“产、学、研、用”一体化平台,平台由教学模块、实验模块和科研模块组成,平台基于Docker技术[11-12],提供了丰富的实验镜像资源,能灵活实现Hadoop、Spark、Hive、Hbase、TensorFlow等不同的大数据实验环境,使用者也可以根据基础镜像自由搭建满足实验要求的实验环境。目前,Hadoop环境搭建已经可以轻松实现,所以,本实验案例选择三节点的Hadoop集群为基础实验环境进行环境部署,环境部署步骤包括安装MySQL、安装部署Hive数据仓库、安装部署Spark,详细步骤如图3所示。

图3

● 综合性实验案例设计

实验案例环境主要包括集群(包括3个节点:Master、Slave01、Slave02),CentOS7.5、Hadoop2.7.3、Eclipse4.7、Java1.8.1、Spark2.1.1、MySQL5.7.17、Hive1.2.1等。

1.实验目的与任务要求

实验目的:学生通过这个综合性实验案例的练习,掌握大数据处理流程和综合应用大数据相关技术的能力。

任务要求:实验对服务商给出的历史数据进行分析,以图形化的方式直观展现各服务区域服务指标达标情况,以及展现各服务区域的累积服务量。通过数据分析,对各类用户做多维画像,降低用户的投诉和流失。

2.实验数据集

数据是运营商提供的历史数据,由工单历史数据和专席通话记录数据两部分组成。工单历史数据包含省份、单号、账号等16个字段,专席通话记录数据包含主叫号码、被叫号码、呼叫类型和呼叫时间4个字段。

3.实验主要步骤

实验步骤如上页图2所示,具体如下。

步骤一:使用Java POI对源文件进行格式的转换,将Excel表格中的工单数据、话单数据内容解析后,写到TXT文本文件中;

步骤二:使用Spark-SQL对第一步处理后的文件进行清洗;

步骤三:将预处理后的数据存储到HDFS上的指定位置;

步骤四:使用Spark-SQL创建外部表,然后将数据加载到外部表的指定位置,完成数据的存储,作为下一模块数据分析处理的数据源;

步骤五:在Spark-SQL中创建库文件,在库中创建投诉风险表、投诉风险展示数据表、不同类用户指标表、全区域服务统计表、服务效能表、故障区域分布表、各省工单量表、风险投诉各类用户数量表、累计工单量表,并按需求对各表进行分布式统计;

步骤六:利用MapReduce编程实现全区域服务统计表的数据分析;

步骤七:通过Bash脚本将之前数据处理模块的需求分析结果导出,再在关系型数据库中建库建表,最后以加载本地数据的方式向数据库中加载数据,完成数据的ETL;

步骤八:使用Java Web实现结果数据可视化。

4.实验结果展示

实验通过大数据解决方案,从客户提供的数据中分析得出有效的信息,并以丰富直观的图表形式进行展示,为决策机构提供有效的支撑。

● 结语

大数据课程体系在大数据人才培养中起着重要作用,决定着人才培养的质量。以Hadoop、Spark为基础的大数据技术错综复杂,学生学习时困难重重,因此在教学的过程中,在学生理论知识学习的基础上,应加强实验练习,通过实验案例的学习,逐步由基础实验案例过渡到综合性实验案例,真正做到理论和实践相结合。综合性实验案例有着最强的实践应用特性,通过本实验案例的学习,学生在大数据技术的理解和应用会有更大的提升,同时深化了产教融合,促进人才链、产业链和创新链有机衔接,形成产教良性互动、校企优势互补的良好氛围,从而达到大数据专业人才的培养目标。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!