基于Spark的学情日志数据分析可视化系统

 摘  要

在如今教育环境中,学校日志数据具有潜在的宝贵信息。这些数据包括学生的登录记录、课程浏览历史、作业提交时间、在线测试成绩等待。通过深入分析和可视化这些数据,可以找出学生学习、生活、身体和心理等各方面的成长情况。通过分析学生学习行为和模式,教育者可以更好地了解每个学生的需求和学术紧张,从而提供个性化支持,改善学术成绩和学习体验。通过数据分析可视化,教育者和管理者可以更好地了解课程教育效果和学生的参与情况,这有助于制定教育改进策略和优化资源分配,从而提高教学质量[1]。

为了贴近生活实际,本系统使用java语言模拟学生的日常行为数据如在校消费记录,图书馆借阅信息,校园内打卡记录等信息,将模拟好的数据使用消息队列模型Kafka来进行存储[2]。模拟数据的同时使用Spark streaming实时计算框架消费kafka消息队列中学生的行为数据[17],进行实时的分析计算,将计算结果存储到mysql数据库中,使用spring boot的web框架系统读取mysql数据库中的结果数据以图表进行实时展示,方便学校老师及时了解学生的实时信息[6]。

传统的学生管理等系统只能进行离线的学生信息统计分析[16],本系统能够实时地对学生信息进行追踪。

关键词:在线教务;数据分析;数据可视化

 ABSTRACT

In today's educational environment, school log data has the potential for valuable information. These data include student login records, course browsing history, homework submission time, online test scores, etc. By analyzing and visualizing these data in depth, we can identify the growth situation of students in various aspects such as learning, life, physical and psychological well-being. By analyzing student learning behavior and patterns, educators can better understand each student's needs and academic tension, thereby providing personalized support, improving academic performance and learning experience. Through data analysis and visualization, educators and managers can better understand the effectiveness of curriculum education and student participation, which helps to develop educational improvement strategies and optimize resource allocation, thereby improving teaching quality.

Key words: Online Academic Affairs; Data Analysis; Data Visualization

第一章 引言

1.1  背景 

中国目前高等教育现状分析随着我国社会主义市场经济体制和政治体制的不断完善和发展,我国的高等教育体制也面临着新的发展阶段。一方面,在体制改革方面取得了累累硕果,人们对先进文化的需求得到了更好的满足,从而促进了社会的发展。另一方面,教育体制问题层出不穷,严重束缚了人才自由全面的发展。教育体制问题亟待解决。

一.现就中国目前高等教育现状分析如下:

我国高等教育的发展历程清晰地显示,在我国这样一个人口众多的发展中国家,在有限的情况下,必然要维持一段时间的“穷国办大教育”的局面,且这种背景下的高等教育质量是很难保证的。另外中国的总人口数中,我国受教育的人口较低,受高等教育的人口更少,这已严重的影响了我国特色社会主义市场经济的健康发展和高等教育水平的发展。自20世纪90年代以来,我国高等教育无论在办学规模、办学质量、办学理念、办学方式,还是在师资水平、学生人数、高教投资、管理监控上都得到较快的发展,但仍低于发展中国家的平均水平,远远未能适当超前于社会发展和经济发展。改革开放以来,我国经济保持了平均8%的较快增长率,富裕起来的中国人,在经济上具备了 “接收更好更高教育”的经济能力,并且在心理上也产生了对高等教育的更迫切的需求。然而现有的高等教育的供给无论在数量上,还是在质量上都显得严重不足。当今我国高等教育面临的诸多问题,如果不加以探讨并尽可能提出相应的对策,对于实现我国高等教育发展新阶段的目标极为不利。

二.目前我国高等教育面临的问题

高等教育的生存与竞争问题

我国高等教育发端的严重滞后,发轫后的不连续性发展历程,以及一个多世纪高等教育投入的严重不足,是我国高等教育在总体实力上远低于欧美等国高等教育的总体实力。使得我国在WTO的框架和游戏规则内,在与欧美高等教育的生存竞争中处于“历史性的弱势地位”。可以说这是在我国高等教育存在的整个历史阶段中,挑战最为严重的时期,同时也是我国高等教育面临的首要问题。

高等教育的公平与效率问题

当前,我国高等教育无论是从起点、过程之中,还是从结果上都是不公平的。如果处理不好,就可能给高等教育的健康发展带来不可预见的损失。而高等教育资源利用效率的低下,也无疑加剧了有限的高等教育的资源紧张和匮乏程度;另一方面,在公平第一还是效率第一的争论上,还没一个很好的定论,也是高等教育发展不稳的一个诱因。

高等教育大众化与质量监控问题

高等教育质量问题总是伴随着高等教育发展的大众化而不断被人们关注,质量是高等教育发展过程中一个永恒的主题。当前,我国高等教育正逐渐由精英化教育向大众化教育方向发展。同时高等教育的“扩招”所言生的高等教育的“量”的扩张与“质”的稳定和提高的问题凸显出来。如果不能把教育的“量”的扩张与“质”的稳定和提高有机结合,必然成为制约高等教育发展的重要问题。如果不能处

理好由于高等教育的大众化导致的质量监控问题,我国高等教育的发展就有可能冲走别人走过的弯路。

教育部门的发展目标盲目追求高层次,偏离了社会需求。 高等教育人才培养与社会人才需求不相适应,培养与需求相脱节,本科生比例过大,挤占了专科生的就业市场;而专科生所学则过于理论化,不能胜任高级技工的工作。一方面,本科毕业生的工资水平下跌,接近普通的蓝领熟练工的工资。另一方面许多专科生找不到工作。目前高校毕业生就业难问题已成为社会关注的焦点。进而引发了人们对教育的怀疑,对社会的不满,甚至上升到对改革的抱怨。更让人担心的是这种负面影响逐渐蔓延到义务教育阶段,一些边远地区、贫困地区新的读书无用论正在抬头。影响了民族整体素质的提高,也间接地影响了社会的文明、道德、公平,加大了城乡之间的差距以及解决三农问题的难度。是政策导向、社会价值观导向、人才培养结构出了问题。不是大学生太多了,是从政府到教育系统自身乃至全社会对孩子们的成长与发展关心太少了。

是高等教育自身的道德与科学精神问题。

一教育者方面,学术造假及学术腐败问题折射其背后的学术道德水准下降、科学精神缺失的状态,这种负面作用将直接影响到在校学生,进而影响到整个未来社会的道德水准及社会诚信。另外,近几年高等教育自身也出现了一些背离科学精神的做法,如:过于频繁的各种评审、评优与评奖;过于量化的各种指标评价体系等。这些带有较强行政主导色彩和功利驱动背景的做法催生了学术浮躁和急功近利,

弱化了学术道德与科学精神。二学生方面,校园暴力事件频繁发生,学生思想道德水平不断下降,法律意识淡薄,综合素质不高。影响学生的身心健康,在社会上造成不良影响。

在如今教育环境中,学校日志数据具有潜在的宝贵信息[2]。这些数据包括学生的登录记录、课程浏览历史、作业提交时间、在线测试成绩等,通过SparkStreaming等实时技术来存储消费,对学生日志信息进行实时分析[8]。通过深入分析和可视化这些数据,可以找出学生学习、生活、身体和心理等各方面的成长情况。通过分析学生学习行为和模式,教育者可以更好地了解每个学生的需求和学术紧张,从而提供个性化支持,改善学术成绩和学习体验。通过数据分析可视化,教育者和管理者可以更好地了解课程教育效果和学生的参与情况,这有助于制定教育改进策略和优化资源分配,从而提高教学质量。

1.2  研究的目的和意义

中国高等教育目前所面临的问题,其本质仍然是生产关系不适应生产力的发展。由政府财政支撑的国立高等教育体系难以满足人民群众日益增长的强烈需求。解决这一问题的根本方法仍然是变革生产关系,解放生产力。

完善我国高等教育网网络体系,增强他在世界的影响力和辐射力,及高等教育的体系化和网络化:开展中外强强合作办学,努力打造以一流大学和学科,加快国际认证和我国高等教育的国际准入,及高等教育的国际化和开放化;加强高等教育符合国际标准的法规建设和遵循国际通行的学术规范,及高等教育的法制化和规范化;发展职业教育和数字教育,建立终身学习观念,及高等教育的数字化和终身化。从而是我国高等教育首先从质量上达到或保持在高水平的运作平台上,以质量求的发展的机遇。

追求相对公平是社会主义制度和社会主义高等教育的本质规定和内在要求,社会主义高等教育必须坚持公平原则。首先应完善助学保障制度,建立相对合理的奖、贷、助、减制度,尽可能保证亲困学生不因经济困难而失去接受高等教育的机会;其次,建立对弱势群体的“补偿利益”制度,包括对地区弱势、经济弱势、身心弱势的群体的利益补偿,及高等教育向这些弱势群体倾斜。最后,针对不同高

校的发展起点的不同所衍生的二次不公平问题,可以建立对弱势高等教育机构的资助制度,鼓励如是高等教育的机构投资主体的多元化和多渠道。

要保证高等教育大众化的适应性和质量的延续性,就必须建立高等教也质量的监控机制。具体地说,一是高等教育质量观的多样化,即学术上的质量观、满足社会需求的质量观和整体性质量关;二是树立牢固的质量意识,把质量与法制观念紧密结合起来,做到依法治教,依法保质;三是建立内控质量监控机制和外控质量监控机制,即内部建立校、院、系、班四级教学质量管理体系和规章制度,外部应建立政府、社会和相对独立的评价机构三方互动有互不干涉的质量监控机制。四是建立与国际接轨的高等教育质量监控的标准化和数字化,从而使中国的高等教育达到世界的教育标准。

教育的过度发展与“知识型劳动力过剩”的互动必然造成教育资源的配臵不当和投资效率低下。为了解决高等教育人才培养与社会人才需求不相适应的问题,一方面要改进教学内容、教学方式、培养模式另一方面加大求职辅导的力度,提高毕业生核心就业竞争力——工作能力,提高就业率、薪资、社会满意度,为宣传高校吸引生源提供第三方公正和专业性权威依据。

教育者方面,应加强自身的文化和道德修养,强化法律意识,起到积极表率作用。学生方面,认真学习科学文化知识,崇尚科学与法律,不断提高自身修养,做一个有理想、有道德、有文化、有纪律的合格的新时代大学生。

本日志分析与可视化系统采用数据模拟的方式,使用sparkstreaming kafka框架实时模拟学生访问学校教务处等网站的日志记录,推送到kafka消息队列中,然后使用SparkStreaming实时消费kafka中的日志记录,分析统计学生的各种操作,然后将分析结果存储到mysql数据库中,最后使用SpringBoot框架结合echarts框架进行数据的可视化。

主要内容

1)数据模拟,通过java程序实时模拟学生访问学校教务处等网站的日志记录,推送到kafka消息队列中。

2)数据分析处理,使用sparkstreaming框架实时消费kafka中的日志信息,进行各项指标分析。

3)数据可视化,使用SpringBoot和echarts框架对分析的结果数据进行大屏展示,例如柱状图,折线图,饼状图,散点图等。

第二章 技术简介

2.1 技术摘要

基于Spark的学情日志数据分析可视化系统开发工具采用IntelliJ IDEA进行开发。使用maven进行工程jar包管理[9]。

2.1.1idea开发工具简介

IDEA 全称 IntelliJ IDEA,是java编程语言的集成开发环境。IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。

InteliJ IDEA曾在2015年的官网上这样介绍自己:

Excel at enterprise, mobile and web development with Java, Scala and Groovy,with all the latest modern technologies and frameworks available out of the box.

简译: IntelliJ IDEA主要用于支持Java、 Scala、 Groovy 等语言的开发工具,同时具备支持目前主流的技术和框架,擅长于企业应用、移动应用和Web应用的开发。

2.1.2 maven项目构建管理工具简介

Maven这个单词来自于意第绪语(犹太语),意为知识的积累,最初在Jakata Turbine项目中用来简化构建过程。

Maven是一个项目管理工具它包含了一个项目对象模型 (Project Object Model),反应在配置中,就是pom.xml文件,另外就是一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当使用Maven的时候,可以用一个明确定义的项目对象模型来描述你的项目,即pom.xml文件,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。

2.2开发环境

软件开发环境(Software Development Environment,SDE)是指在基本硬件和数字软件的基础上,为支持系统软件和应用软件的工程化开发和维护而使用的一组软件,简称SDE。它由软件工具和环境集成机制构成,前者用以支持软件开发的相关过程、活动和任务,后者为工具集成和软件的开发、维护及管理提供统一的支持。本系统在本地电脑操作系统进行开发,操作系统及各类开发软件版本如下:

操作系统:WINDOWS 10

JDK:1.8

IDEA:IntelliJ IDEA 2020.1.1

VMWARE:15.5pro

HADOOP:3.2.2

SPARK:3.1.2

KAFKA:3.3.1

2.3开发技术

2.3.1 kafka简介

Apache kafka 是一个分布式的基于push-subscribe的消息系统,它具备快速、可扩展、可持久化的特点。它现在是Apache旗下的一个开源系统,作为hadoop生态系统的一部分,被各种商业公司广泛应用。它的最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基于hadoop的批处理系统、低延迟的实时系统、storm/spark流式处理引擎。

Kafka的特性

高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒

可扩展性:kafka集群支持热扩展

持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失

容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点失败)

高并发:支持数千个客户端同时读写

2.3.2 SpringBoot及layui简介

Spring Boot是一个基于Spring框架的快速开发脚手架,它简化了Spring应用的初始化和搭建过程,提供了众多便利的功能和特性,比如自动配置、嵌入式Tomcat等,让开发人员可以更加专注于业务逻辑的实现。

Spring Boot还提供了强大的插件体系和广泛的集成,可以轻松地与其他技术栈集成,比如Thymeleaf模板、JPA、MyBatis、Redis、MongoDB等,同时也支持对微服务的开发和管理。

Spring Boot 是一种基于 Spring Framework 的快速应用程序开发工具,它有以下优点:

快速开发:Spring Boot 提供了快速、简单的开发方式,自动配置 Spring 和其他第三方库,使开发人员专注于业务逻辑的编写,从而极大地提高了开发速度。

微服务支持:Spring Boot 自带微服务开发核心组件(如 Spring Cloud),提供了一套完整的微服务开发和部署方案,使开发人员可以轻松构建和部署大型、复杂的分布式应用程序。

轻量级:Spring Boot 的特性是精简、灵活、模块化的,应用程序的运行时开销较小,能够快速响应用户请求,同时减少了开发和部署的成本。

易于部署和管理:Spring Boot 应用程序可以打成 jar 或 war 包,可以很方便地部署到云平台或容器中,例如 Docker、Kubernetes 等,并且还有一些常用的管理工具,例如 Actuator,可以监控、管理应用程序。

多数据源支持:Spring Boot 提供了多种数据库的支持,包括关系型数据库和非关系型数据库,开发人员可以根据自己的需要方便地进行配置和使用。

安全性:Spring Boot 提供了各种安全功能和特性,如 SSL/TLS、OAuth2、JWT 等,可以保障应用程序的安全性。

  总的来说,Spring Boot 的优点包括快速开发、微服务支持、轻量级、易于部署和管理、多数据源支持和安全性等方面,这些优点使得 Spring Boot 成为目前非常流行的 Java 应用程序开发框架。

总之,Spring Boot 是一个 Spring 构架的开发框架,用于简化 Spring 应用程序的开发过程。它使应用程序开发速度更快,更容易部署和管理,并且可以与现有的 Spring 生态基础设施集成,使得开发人员能够快速地构建和部署应用程序。

2.3.3 Spark简介

Spark是基于内存的分布式计算框架。在迭代计算的场景下,数据处理过程中的数据可以存储在内存中,提供了比MapReduce高10到100倍的计算能力。Spark可以使用HDFS作为底层存储,使用户能够快速地从MapReduce切换到Spark计算平台上去。Spark提供一站式数据分析能力,包括小批量流式处理、离线批处理、SQL查询、数据挖掘等,用户可以在同一个应用中无缝结合使用这些能力。Spark2x的开源新特性请参考Spark2x开源新特性。

Spark的特点如下:

•通过分布式内存计算和DAG(无回路有向图)执行引擎提升数据处理能力,比MapReduce性能高10倍到100倍。

•提供多种语言开发接口(Scala/Java/Python),并且提供几十种高度抽象算子,可以很方便构建分布式的数据处理应用。

•结合SQL、Streaming等形成数据处理栈,提供一站式数据处理能力。

•完美契合Hadoop生态环境,Spark应用可以运行在Standalone、Mesos或者YARN上,能够接入HDFS、HBase、Hive等多种数据源,支持MapReduce程序平滑转接。

Spark架构图如下:

Spark基本概念说明

模块

说明

Cluster Manager

集群管理器,管理集群中的资源。Spark支持多种集群管理器,Spark自带的Standalone集群管理器、Mesos或YARN。华为Spark集群默认采用YARN模式。

Application

Spark应用,由一个Driver Program和多个Executor组成。

Deploy Mode

部署模式,分为cluster和client模式。cluster模式下,Driver会在集群内的节点运行;而在client模式下,Driver在客户端运行(集群外)。

Driver Program

是Spark应用程序的主进程,运行Application的main()函数并创建SparkContext。负责应用程序的解析、生成Stage并调度Task到Executor上。通常SparkContext代表Driver Program。

Executor

在Work Node上启动的进程,用来执行Task,管理并处理应用中使用到的数据。一个Spark应用一般包含多个Executor,每个Executor接收Driver的命令,并执行一到多个Task。

Worker Node

集群中负责启动并管理Executor以及资源的节点。

Job

一个Action算子(比如collect算子)对应一个Job,由并行计算的多个Task组成。

Stage

每个Job由多个Stage组成,每个Stage是一个Task集合,由DAG分割而成。

Task

承载业务逻辑的运算单元,是Spark平台中可执行的最小工作单元。一个应用根据执行计划以及计算量分为多个Task。

2.3.4 SparkStreaming简介

Spark Streaming是一种构建在Spark上的实时计算框架,扩展了Spark处理大规模流式数据的能力。当前Spark支持两种数据处理方式:Direct Streaming和Receiver方式。

Direct Streaming计算流程

Direct Streaming方式主要通过采用Direct API对数据进行处理。以Kafka Direct接口为例,与启动一个Receiver来连续不断地从Kafka中接收数据并写入到WAL中相比,Direct API简单地给出每个batch区间需要读取的偏移量位置。然后,每个batch的Job被运行,而对应偏移量的数据在Kafka中已准备好。这些偏移量信息也被可靠地存储在checkpoint文件中,应用失败重启时可以直接读取偏移量信息。

需要注意的是,Spark Streaming可以在失败后重新从Kafka中读取并处理数据段。然而,由于语义仅被处理一次,重新处理的结果和没有失败处理的结果是一致的。

因此,Direct API消除了需要使用WAL和Receivers的情况,且确保每个Kafka记录仅被接收一次,这种接收更加高效。使得Spark Streaming和Kafka可以很好地整合在一起。总体来说,这些特性使得流处理管道拥有高容错性、高效性及易用性,因此推荐使用Direct Streaming方式处理数据。

Receiver计算流程

在一个Spark Streaming应用开始时(也就是Driver开始时),相关的StreamingContext(所有流功能的基础)使用SparkContext启动Receiver成为长驻运行任务。这些Receiver接收并保存流数据到Spark内存中以供处理。用户传送数据的生命周期如图5所示:

图5 数据传输生命周期

1.接收数据(蓝色箭头)

Receiver将数据流分成一系列小块,存储到Executor内存中。另外,在启用预写日志(Write-ahead Log,简称WAL)以后,数据同时还写入到容错文件系统的预写日志中。

2.通知Driver(绿色箭头)

接收块中的元数据(Metadata)被发送到Driver的StreamingContext。这个元数据包括:

•定位其在Executor内存中数据位置的块Reference ID。

•若启用了WAL,还包括块数据在日志中的偏移信息。

3.处理数据(红色箭头)

对每个批次的数据,StreamingContext使用Block信息产生RDD及其Job。StreamingContext通过运行任务处理Executor内存中的Block来执行Job。

4.周期性地设置检查点(橙色箭头)

5.为了容错的需要,StreamingContext会周期性地设置检查点,并保存到外部文件系统中。

容错性

Spark及其RDD允许无缝地处理集群中任何Worker节点的故障。鉴于Spark Streaming建立于Spark之上,因此其Worker节点也具备了同样的容错能力。然而,由于Spark Streaming的长正常运行需求,其应用程序必须也具备从Driver进程(协调各个Worker的主要应用进程)故障中恢复的能力。使Spark Driver能够容错是件很棘手的事情,因为可能是任意计算模式实现的任意用户程序。不过Spark Streaming应用程序在计算上有一个内在的结构:在每批次数据周期性地执行同样的Spark计算。这种结构允许把应用的状态(亦称Checkpoint)周期性地保存到可靠的存储空间中,并在Driver重新启动时恢复该状态。

对于文件这样的源数据,这个Driver恢复机制足以做到零数据丢失,因为所有的数据都保存在了像HDFS这样的容错文件系统中。但对于像Kafka和Flume等其他数据源,有些接收到的数据还只缓存在内存中,尚未被处理,就有可能会丢失。这是由于Spark应用的分布操作方式引起的。当Driver进程失败时,所有在Cluster Manager中运行的Executor,连同在内存中的所有数据,也同时被终止。为了避免这种数据损失,Spark Streaming引进了WAL功能。

WAL通常被用于数据库和文件系统中,用来保证任何数据操作的持久性,即先将操作记入一个持久的日志,再对数据施加这个操作。若施加操作的过程中执行失败了,则通过读取日志并重新施加前面预定的操作,系统就得到了恢复。下面介绍了如何利用这样的概念保证接收到的数据的持久性。

Kafka数据源使用Receiver来接收数据,是Executor中的长运行任务,负责从数据源接收数据,并且在数据源支持时还负责确认收到数据的结果(收到的数据被保存在Executor的内存中,然后Driver在Executor中运行来处理任务)。

当启用了预写日志以后,所有收到的数据同时还保存到了容错文件系统的日志文件中。此时即使Spark Streaming失败,这些接收到的数据也不会丢失。另外,接收数据的正确性只在数据被预写到日志以后Receiver才会确认,已经缓存但还没有保存的数据可以在Driver重新启动之后由数据源再发送一次。这两个机制确保了零数据丢失,即所有的数据或者从日志中恢复,或者由数据源重发。

如果需要启用预写日志功能,可以通过如下动作实现:

•通过“streamingContext.checkpoint”(path-to-directory)设置checkpoint的目录,这个目录是一个HDFS的文件路径,既用作保存流的checkpoint,又用作保存预写日志。

•设置SparkConf的属性“spark.streaming.receiver.writeAheadLog.enable”为“true”(默认值是“false”)。

在WAL被启用以后,所有Receiver都获得了能够从可靠收到的数据中恢复的优势。建议缓存RDD时不采取多备份选项,因为用于预写日志的容错文件系统很可能也复制了数据。

2.3.5 SparkSql简介

Spark SQL的架构,在Shark原有的架构上重写了逻辑执行计划的优化部分,解决了Shark存在的问题。Spark SQL在Hive兼容层面仅依赖HiveQL解析和Hive元数据,也就是说,从HQL被解析成抽象语法树(AST)起,就全部由Spark SQL接管了。Spark SQL执行计划生成和优化都由Catalyst(函数式关系查询优化框架)负责。

Spark SQL增加了SchemaRDD(即带有Schema信息的RDD),使用户可以在Spark SQL中执行SQL语句,数据既可以来自RDD,也可以来自Hive、HDFS、Cassandra等外部数据源,还可以是JSON格式的数据。Spark SQL目前支持Scala、Java、Python三种语言,支持SQL-92规范。从Spark1.2 升级到Spark1.3以后,Spark SQL中的SchemaRDD变为了DataFrame,DataFrame相对于SchemaRDD有了较大改变,同时提供了更多好用且方便的API。

Spark SQL可以很好地支持SQL查询,一方面,可以编写Spark应用程序使用SQL语句进行数据查询,另一方面,也可以使用标准的数据库连接器(比如JDBC或ODBC)连接Spark进行SQL查询,这样,一些市场上现有的商业智能工具(比如Tableau)就可以很好地和Spark SQL组合起来使用,从而使得这些外部工具借助于Spark SQL也能获得大规模数据的处理分析能力。

第3章:系统分析

 3.1可行性分析

基于Spark的学情日志数据分析可视化系统主要目标是实现对学生在校日志信息的管理与分析等。本分析可视化系统可以在浏览器中访问,现在web服务器都可以运行。而且平台中的技术也是自身所具有的,也是现在比较流行的技术之一,开发平台中的开发环境和配置都可以自行安装,平台所采用的IDEA开发工具,使用现在流行的MySQL数据库来存储平台中的所有数据,根据技术语言对数据库进行维护和扩展,这样可以使网站更加稳定和安全,最终开发出一个完美的平系统。该系统的设计到开发完成都是自己完成的,而且使用的都是普遍容易操作且常见的技术,在整个开发过程以及后续使用中,都不需要购买他人的技术软件或者花钱请教他人指导使用方法。在平台投入使用后,日常的维护也可以自动更新,因此该系统的研发具有经济可行性。

 3.2需求分析

为了贴近生活实际,本系统使用java语言模拟学生的日常行为数据如在校消费记录,图书馆借阅信息,校园内打卡记录等信息,将模拟好的数据使用消息队列模型Kafka来进行存储。模拟数据的同时使用Spark streaming实时计算框架消费kafka消息队列中学生的行为数据,进行实时的分析计算,将计算结果存储到mysql数据库中,使用spring boot的web框架系统读取mysql数据库中的结果数据以图表进行实时展示,方便学校老师及时了解学生的实时信息。

传统的学生管理等系统只能进行离线的学生信息统计分析,本系统能够实时地对学生信息进行追踪。

3.2.1管理员需求分析

1.系统管理

系统管理功能,主要为系统正常运行做支撑,主要包括用户管理、系统管理员管理等功能。

(1)用户管理:主要是对系统内的用户进行增删改查及日常维护。

(2)系统管理员管理:系统管理员在系统中只有一个,是对自己账号的信息更新和系统的日常维护。

2.老师管理

老师管理:添加、修改和删除老师信息

3.院系管理

院系管理分为学院的管理,专业管理,年级管理,是为了学院内信息修改更新做保障。

3.2.2老师需求分析

1.院系管理

在老师的功能图中,院系管理中分为班级管理、年级管理和学生管理。

(1)在班级管理中分为班级的成绩排名和班级奖惩查询,为的是查询班级中成绩优异的同学的成绩和班级内学生的奖惩情况。

(2)在年级管理中分为年级排名、年级选择、年级奖惩查询,年级排名是为了查询年级中成绩优异的学生成绩,年级奖惩查询可以看出年级中的奖惩情况,对情节严重的同学加以提醒,年级选择为选择各个年级,分别查看各年级的排名情况和奖惩情况。

(3)学生管理中分为学生静态信息管理和学生动态信息管理,学生静态信息管理主要是为了管理学生的成绩、学生的个人信息、学生的奖惩情况和学生的考勤情况。学生动态信息管理是为了通过学生校园行动的查询、学生图书借阅情况和学生的消费情况对学生的成绩进行分析,分析学生各个维度,查看学生整体学习情况、查看学生的个人学习情况,来进行相关的分析。

3.2.3功能分析

   登录注册功能分析

用户注册:系统管理员通过系统预置生成,系统内的老师用户需要通过管理员来进行添加,系统内的学生需要通过老师来添加。

用户登录:在登录页面用户输入账号和密码点击登录,系统自动识别当前登录的用户是管理员还是老师或是学生,并根据登录的用户角色不同进入到不同的页面。

   数据模拟功能分析

系统通过java程序,每隔2秒模拟生成一次学生信息,包含学生校园内的消费日志数据,校园图书借阅日志数据以及校园内行动轨迹日志数据,并将模拟生成的数据发送到kafka的不同topic中进行存储。

   数据分析功能分析

系统使用SparkStreaming实时计算框架实时消费读取模拟程序发送到kafka的topic中的数据,进行指标实时分析统计。

   数据可视化功能分析

系统数据可视化,使用springboot+echarts进行动态的图形展示。

3.2.4非功能性分析

 系统性能分析

为了能够让用户可以顺利的使用基于Spark的学情日志数据分析可视化系统,平台中设置了响应指标,通过响应指标来判断平台的好坏,如果响应时间比较短,那么说明平台处理数据信息比较有效,并且提高工作人员的工作效率。平台设计中,必须要有一定的安全性和稳定性,从而保证平台正常的运转。

(1)平台功能完整性:将平台中的各个功能模块进行分析,并且分析后通过文字、表格的方式展示出来。

(2)平台运行分析:将平台中的各个模块运行情况进行分析,然后采用数据的方式进行展示。

(3)界面设计:在设计平台界面时一定要保持整洁,而且保证功能模块能够正常运转,最终保证整个平台的运行。

第4章:技术实现

 4.1系统结构设计

   系统先通过数据模拟生成学生日志信息,将数据发送到kafka队列中,使用sparkstreaming消费kafka队列中的日志数据进行分析,使用spark sql分析框架使用函数count进行指标统计求和,groupby函数进行分组统计,orderby函数对分析计算结果排序。最后将spark结果dataframe数据使用write函数按照overwrite模式进行写出到数据库mysql中,分析结果用数据表存储到数据库中,然后使用SpringBoot+echarts对分析结果进行图形可视化。

图4.1 系统结构图

4.1.1 图书借阅信息模拟

首先在kafka中创建名为borrow的topic用于接收模拟生成学生借阅信息;构建Properties对象分别设置kafka集群ip和端口以及kafka消息模拟为ACK为all防止消息丢失。然后创建KafkaProducer生产者对象,使用循环遍历的方式每5秒生成一次学生图书借阅信息,借阅信息包含:图书编号、书名、借阅学生学号、借阅学生姓名、图书状态(归还、借阅)、借阅开始时间、还书时间各个字段之间使用英文逗号分割。最后调用send方法向borrow主题中发送生成的图书借阅信息。

主要代码如下

//创建生产者

KafkaProducer<String, String> producer = new KafkaProducer<String, String>(properties);

while (true) {

    Map<String, String> sno = null;

    try {

        sno = Utils.getSno();

        Set<String> set = sno.keySet();

        for (String no : set) {

            int dd = (int) (Math.random() * 10000);

            List<String> times = Utils.getTime();

            int index = (int) (Math.random() * borrow.size());

            String message = "B" + dd + "," + "图书" + dd + "," + no + "," + sno.get(no) + "," + (int) (Math.r
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值