Spark大数据分析实务 课件 项目7 基于Spark开发环境实现广告流量检测违规识别_第1页
Spark大数据分析实务 课件 项目7 基于Spark开发环境实现广告流量检测违规识别_第2页
Spark大数据分析实务 课件 项目7 基于Spark开发环境实现广告流量检测违规识别_第3页
Spark大数据分析实务 课件 项目7 基于Spark开发环境实现广告流量检测违规识别_第4页
Spark大数据分析实务 课件 项目7 基于Spark开发环境实现广告流量检测违规识别_第5页
已阅读5页,还剩107页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目7

基于Spark开发环境实现广告流量检测违规识别知识准备教学目标知识目标掌握JDK安装和环境配置。掌握在IDEA等编程软件创建Scala工程。掌握Spark运行环境配置。教学目标技能目标能够本地环境下配置JDK环境,实现Java环境运行。能够在IDEA中配置相关插件和开发依赖包,实现Scala工程创建。能够在开发环境中添加Spark运行环境配置,实现Spark程序运行。教学目标素质目标具备新的学习思维模式,通过扩展思维空间,进而深度了解Spark开发环境搭建。具备刻苦钻研的学习态度,通过学习Spark运行环境配置,实现Spark程序运行。具备灵活地运用思维,通过学习SparkShell及Spark集成开发环境,能够应用到实际需求中。思维导图项目背景在实际业务场景中,广告流量检测违规识别面临着数据量大和对违规识别的要求高等挑战。使用SparkShell会对每个指令做出反馈,能够为执行Spark迭代操作快速得到结果,适合用于快速测试和探索数据,但对于大规模的数据处理和复杂的任务,其性能可能不如使用集成开发工具。项目背景同时,SparkShell的交互式操作方式可能不够灵活,对于需要频繁运行和调试的任务来说,编程开发工具能够提供更好的开发和调试体验。因此,使用集成开发工具可以更好地解决实际的广告流量检测违规识别。当前集成开发环境工具主要有IntelliJIDEA和Eclipse,本书采用比较大众化的IntelliJIDEA开发工具。本项目通过搭建Spark开发环境,将多行代码、多个类进行协调,实现广告流量检测违规识别。项目目标通过搭建Spark开发环境,对广告流量检测数据搭建模型,通过算法构建分类模型,并将程序提交到集群中运行,实现广告流量检测违规识别。目标分析配置集群连接参数设置,将广告流量检测违规识别Spark程序编译成Jar包,在集群环境中运行。保存广告流量检测违规识别训练完成后的模型和预测结果。搭建Java开发环境搭建Spark开发环境搭建Java开发环境积累基本的知识和技能,加强基础研究,形成良好的工作和学习习惯,培养健康的心理状态和人际关系,再加上进一步地学习、工作和成长,才能够更加稳固地迈向成功。由于Spark是使用Scala语言开发的,而Scala运行在Java虚拟机(JVM)之上的,可以兼容现有的所有Java程序,故在搭建Spark开发环境之前先进行Java环境开发。安装JDK8在JDK官网下载JDK8安装包,根据电脑的系统选择对应的版本,其中x86表示32位Windows系统,x64表示64位Windows系统。以64位Windows系统为例安装JDK8,安装包名为jdk-8u281-windows-x64.exe。安装JDK8安装JDK8的操作步骤如下。设置JDK安装目录。双击JDK8安装包,进入安装向导界面,单击“下一步”按钮。弹出的JDK的定制安装窗口如图所示,设置好JDK8的安装目录(本书的安装在E盘,路径为:E:\ProgramFiles\Java\jdk1.8.0_281\),单击“下一步”按钮。安装JDK8取消Jre安装。在安装的过程中,会跳出要求安装Java目标文件夹(Jre)的安装窗口,如左图所示,由于JDK自带了Jre,所以无须单独安装Jre,单击右上角的关闭按钮,弹出的Java安装窗口,如右图所示,单击“是”按钮。安装JDK8JDK安装完成。JDK安装成功后的界面如图所示,单击“关闭”按钮完成安装。设置环境变量环境变量一般指在操作系统中用来指定操作系统运行环境的一些参数,如path.当要求系统运行一个程序而没有告诉系统程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还会到path中指定的路径去找。设置环境变量在编译程序时,需要用到javac这个编译工具,而javac存放在java的安装目录下,当需要在其他目录调用javac时,系统会因在当前目录找不到就会报错,为了方便以后编译程序,不用每次编译时都在java安装目录中,所以需要进行环境变量设置。环境变量设置的基本流程如图所示。设置环境变量环境变量设置步骤如下。打开高级系统设置。鼠标右击“此电脑”,选择“属性”选项,在“相关设置”中单击“高级系统设置”选项,弹出“系统属性”窗口,如图所示。设置环境变量新建系统变量。单击图的“环境变量”按钮,在“系统变量”选项卡中单击“新建”按钮,新建JAVA_HOME变量,变量值为JDK8安装路径,如图所示,单击“确定”按钮。设置环境变量编辑环境变量。在系统变量中找到Path变量,单击“编辑”按钮,在弹出的“编辑环境变量”窗口中,单击“新建”按钮.然后输入JDK安装路径下的bin目录,如图所示,单击“确定”按钮。设置环境变量验证JDK安装。快捷键Win+R,打开命令提示符窗口进行校验,输入“java-version”,单击Enter键,显示JDK的版本为1.8.0_281,如图所示,则表示已经安装成功。搭建Java开发环境搭建Spark开发环境搭建Spark开发环境安装好Java开发环境后,即可搭建Spark开发环境。一般搭建流程为:先下载安装IntelliJIDEA(简称IDEA),并在IDEA中安装Scala插件;然后添加Spark开发依赖包,配置Spark运行环境,实现Spark工程的创建、Spark程序的编写与运行。下载与安装IntelliJIDEA在官网下载IntelliJIDEA安装包,安装包名称为“ideaIC-2018.3.6.exe”,本书使用的IDEA版本为社区版,即Community版,社区版是免费开源的。安装IntelliJIDEA的基本流程如图所示。下载与安装IntelliJIDEA安装IntelliJIDEA的操作步骤如下。设置IDEA安装目录。双击IDEA安装包,进入安装向导界面,单击“Next”按钮。IDEA安装目录设置界面如图所示,设置好IDEA的安装目录后,单击“Next”按钮。下载与安装IntelliJIDEA选择安装选项。在跳出的“InstallationOptions”对话窗口中,按需进行勾选,本文设置情况如图所示,其中“CreateDesktopShortcut”意为是否创建桌面快捷方式,本书所有的操作基于60位的Windows10系统,所以勾选“64-bitlauncher”选项;“UpdatePATHvariable”意为是否将IDEA的环境变量添加至Windows系统的环境变量中,此处勾选了“AddlaunchersdirtoPATH”选项,即添加环境变量。然后单击“Next”按钮。下载与安装IntelliJIDEA选择开始菜单文件夹。在跳出的“ChooseStartMenuFolder”对话窗口中,保持默认设置,如图所示,然后单击“Install”按钮。下载与安装IntelliJIDEA完成IDEA安装。接下来会弹出的“Installing”对话窗口,如图所示,等待进度条拉满,IDEA安装完成界面如图所示,单击“Finish”按钮完成安装。下载与安装IntelliJIDEA设置不导入以前的设定。双击桌面生成的IntelliJIDEA图标启动IntelliJIDEA。或在“开始”菜单中,依次单击“JetBrains”→“IntelliJIDEACommunityEdition2018.3.6”启动IntelliJIDEA。第一次启动IntelliJIDEA时会询问是否导入以前的设定,选择不导入,如图所示,单击“OK”按钮进入下一步。下载与安装IntelliJIDEA选择UI主题。进入UI主题的选择,如图所示,可以选择白色或黑色背景,本书选择白色背景,单击“Light”页面,并单击左下角的“SkipRemainingandSetDefaults”按钮,跳过其他设置,采用默认设置即可。下载与安装IntelliJIDEA进入IDEA使用界面。设置完成,IDEA使用界面如图所示。Scala插件安装与使用在上一小节中,因为安装IntelliJIDEA时选择了默认安装,所以Scala插件并没有安装。Spark是由Scala语言编写而成的,因此IntelliJIDEA还需要安装Scala插件,配置Scala开发环境。Scala插件的安装有在线安装和离线安装两种方式,具体操作过程如下。在线安装Scala插件在线安装Scala插件的操作步骤如下。打开IntelliJIDEA,单击界面右下角的“Configure”下拉列表,选择“Plugins”选项,如图所示。在线安装Scala插件弹出“Plugins”对话框,如图所示,直接单击“Scala”下方的“Install”按钮安装Scala插件即可。在线安装Scala插件下载完成后,单击“RestartIDE”按钮重启IDEA,如图所示。离线安装Scala插件使用离线安装的方式安装Scala插件时,Scala插件需要提前下载至本机计算机中。本书的IntelliJIDEA版本使用的Scala插件为“scala-intellij-bin-2018.3.6.zip”,可从IDEA官网下载。离线安装Scala插件的操作步骤如下。离线安装Scala插件在图所示的“Plugins”对话框中,单击图标,在下拉列表中选择“InstallPluginfromDisk...”选项,弹出“ChoosePluginFile”窗口,选择Scala插件所在路径,如图所示,单击“OK”按钮进行安装。离线安装Scala插件Scala插件安装完成后的界面,如图所示,单击右侧的“RestartIDE”按钮重启IntelliJIDEA即可。测试Scala插件安装了Scala插件并重启IntelliJIDEA后,如果想测试Scala插件是否安装成功,那么可以通过创建Scala工程进行测试。测试Scala插件的基本流程如图所示。测试Scala插件测试Scala插件的步骤如下。创建Scala工程。在图所示的界面中,选择“CreateNewProject”选项,弹出“NewProject”界面,选择左侧窗格的“Scala”选项,再选择右侧窗格的“IDEA”选项,单击“Next”按钮进入下一步,如图所示。测试Scala插件配置Scala工程。弹出图所示的界面,将工程名称定义为“HelloWorld”,自定义该工程存放路径,并选择工程所用JDK和ScalaSDK版本,单击右下角的“Finish”按钮,完成Scala工程创建。测试Scala插件Scala工程创建完成后,自动进入IDEA主界面,在左侧导航栏可看到创建好的工程,HelloWorld工程结构如图所示。测试Scala插件新建Scala类。右键单击HelloWorld工程下的src文件夹,依次选择“New”→“ScalaClass”选项,在包下新建一个Scala类,如图所示。测试Scala插件配置Scala类。在弹出的“CreateNewScalaClass”窗口中,将Scala类的类名设置为“HelloWorld”,并在“Kind”右侧的下拉列表中选择“Object”选项,如图所示,单击“OK”按钮,完成Scala类的创建。测试Scala插件编写程序。在类“HelloWorld”中即可编写Scala程序。运行程序。选择菜单栏中的“Run”,再依次选择“Run”→“Run'HelloWorld'”选项,若控制台打印出运行结果,如图所示,则证明Scala环境的配置没有问题。在IDEA中配置Spark运行环境使用IDEA开发程序,相比spark-shell编写代码,更加方便以外,通过配置运行环境,还可以直接运行整个Spark程序。添加Spark开发依赖包在IDEA中配置Spark运行环境,需要先在IDEA中添加Spark开发依赖包。选择菜单栏中的“File”→“ProjectStructure...”选项,工程结构配置界面如图所示。也可以使用“Ctrl+Alt+Shift+S”快捷键打开。添加Spark开发依赖包在图所示的工程结构配置界面中,选择“Libraries”选项,单击“+”按钮,选择“Java”选项,如图所示。添加Spark开发依赖包在弹出的界面中找到Spark安装目录下的jars文件夹,将整个文件夹导入,如图所示,单击“Apply”按钮与“OK”按钮即可将Spark开发依赖包加入到工程中。至此Spark的编程环境配置完成。编写Spark程序Spark运行环境配置完成后,即可开始在IDEA开发环境中编写Spark程序。但在编写Spark程序前需要先了解Spark程序运行的设计要点。编写Spark程序任何Spark程序均是以SparkContext对象开始的,因为SparkContext是Spark应用程序的上下文和入口,所以无论是使用Scala、Python或R语言编写的Spark程序,均是通过SparkContext对象的实例化创建RDD。在spark-shell中SparkContext对象自动实例化为变量sc。而在IDEA中进行Spark应用程序开发时,则需要在main()方法中初始化SparkContext对象,作为Spark应用程序的入口,并在Spark程序结束时关闭SparkContext对象。编写Spark程序初始化SparkContext需要一个SparkConf类,SparkConf包含了Spark集群配置的各种参数,如设置程序名setAppName、设置运行模式setMaster等。SparkConf的属性参数是一种键值对的形式,一般通过“set(属性名,属性设置值)”的方法修改属性。编写Spark程序SparkContext对象实例化后,即可通过实例变量进行集合转换或数据读取,并且Spark计算过程中使用的转换操作和行动操作与在spark-shell环境中一致。以词频统计为例,编写Spark程序实现中文分词和词频统计。要想通过Spark实现中文分词,需借助jieba进行分词,因此,需要导入依赖jieba-analysis-1.0.2.jar。编写Spark程序在HelloWorld工程中下新建WordCountLocal类,并指定类型为Object,编写Spark程序实现平均值计算。程序中创建了一个SparkConf对象的实例conf,并且设置了程序名,通过conf创建并初始化一个SparkContext的实例变量sc,再通过Spark的转换操作和行动操作实现中文分词和词频统计。运行Spark程序在开发环境中编写的类并不能像spark-shell环境一样,直接在Spark集群中运行,还需要配置指定的参数,并通过特定的方式才能在Spark集群中运行。Spark程序的运行根据运行的位置可以分为两种方式,一种是在开发环境下运行Spark程序,另一种是在Spark集群环境中运行Spark程序。运行Spark程序在开发环境下运行Spark在开发环境下运行Spark程序,可以通过SparkConf对象的setMaster()方法连接至Spark集群环境,即可在开发环境下直接运行Spark程序。在WordCountLocal类中,通过SparkConf实例设置程序运行模式为“local”。在IDEA中运行Spark程序时,文件的输入路径可以是本地路径,也可以是HDFS文件系统的路径。在开发环境下运行Spark设置URL参数在本地开发环境下运行Spark程序,程序中有以下几点需要设置。在IDEA中直接运行程序的关键点是设置URL参数。如果不使用setMaster()方法设置URL参数,那么程序将找不到主节点(master)的URL,会报出相应的错误。除了通过setMaster()方法设置URL参数之外,也可以通过依次选择菜单栏的“Run”→“EditConfigurations...”选项。在开发环境下运行Spark在弹出的对话框中,选择“Application”→“HelloWorld”选项,并在右侧“VMoptions”对应的文本框中写入“-Dspark.master=local”,指定为本地模式,如图所示,然后依次单击“Apply”按钮和“OK”按钮。其中,“local”是指定使用的URL参数。在开发环境下运行Spark在代码中指定要连接的集群的URL参数为“local”,即本地运行,可以在不开启Spark集群的情况下运行。除了本地模式“local”,还可以设置URL参数,如表所示。URL参数含义local使用一个工作线程在本地模式运行Spark(即根本没有并行性)local[K]使用K个工作线程在本地模式运行Spark(理想情况下,将其设置为机器上的内核数)local[*]在本地运行Spark,工作线程与机器上的逻辑内核一样多spark://HOST:PORT连接到指定端口的Spark独立集群上,默认为7077端口mesos://HOST:PORT连接到指定端口的Mesos集群yarn根据配置的值连接到YARN集群,使用client或cluster模式yarn-client应用程序以客户端模式运行,相当于YARN用--deploy-modeclient参数yarn-cluster应用程序以集群模式运行,相当于YARN用--deploy-modecluster参数。只能在集群中运行时使用在开发环境下运行Spark需要注意的是,“spark://HOST:PORT”是独立集群的URL参数,是在Spark集群中运行的,因此一定要启动Spark集群。若是本地模式或YARN集群模式运行,则可以不用打开Spark集群,但YARN集群模式需要启动Hadoop集群。在开发环境中,只能指定“yarn-client”的客户端模式,不能指定“yarn-cluster”。而且在开发环境中指定“yarn-client”还需要额外设置YARN的一些相关配置,因此不建议在开发环境中直接指定该方式运行。在开发环境下运行Spark指定Hadoop安装包的bin文件夹的路径本地在运行Spark程序时还需要指定Hadoop安装包的bin文件夹的路径,有两种方式。第一种是通过参数的方式进行设置,对应参数名是“hadoop.home.dir”,指定的路径为“D:\\hadoop-3.1.4”。在开发环境下运行Spark第二种指定“hadoop.home.dir”的方式是在Windows的环境变量的Path变量中添加Hadoop安装包的bin文件夹的路径,此时代码所示的程序则不再需要指定该参数。在Hadoop安装包的bin文件夹中还需要添加几个Hadoop插件,分别是winutils.exe、winutils.pdb、libwinutils.lib、hadoop.exp、hadoop.lib、hadoop.pdb。读者可在GitHub官网上自行下载并添加到/bin文件夹中。在开发环境下运行Spark设置自定义输入参数如果程序有自定义的输入参数,那么运行程序之前还需要选择菜单栏中的“Run”→“EditConfigurations...”→“Programarguments”选项进行设置。在代码中并没有设置输入参数,因此直接选择菜单栏中的“Run”→“Run”选项,运行“WordCountLocal”程序即可,控制台的输出的部分结果如图所示。在集群环境中运行Spark直接在开发环境下运行Spark程序通常选择的是本地模式。如果数据的规模比较庞大,更常用的还是将Spark程序编译打包为JAR包,并通过spark-submit命令提交到Spark集群环境中运行。在集群环境中运行Sparkspark-submit的脚本在Spark安装目录的bin目录下,spark-submit是Spark为所有支持的集群管理器提供的一个提交作业的工具。Spark在/example目录下有Scala、Java、Python和R的示例程序,都可以通过spark-submit运行。在集群环境中运行Sparkspark-submit提交JAR包到集群有一定的格式要求,需要设置一些参数,参数设置如表所示。参数参数说明--class应用程序的入口点,指主程序--master指定要连接的集群URL的参数--deploy-mode设置将驱动程序部署在集群的工作节点(cluster),或将其部署在本地的外部客户端(client)--conf设置任意Spark配置属性,允许使用"key=valueWordCount"的格式设置任意的SparkConf配置选项application-jar包含应用程序和所有依赖关系的JAR包的路径application-arguments传递给main()方法的参数在集群环境中运行Spark如果除了设置运行的application.jar之外不设置其他参数,那么Spark程序默认在本地运行。在HelloWorld工程中下新建AverageDriver类,并指定类型为Object,将URL参数更改为打包到集群中运行。程序中无须设置master地址、Hadoop安装包位置。输入、输出路径可通过spark-submit指定。在集群环境中运行Spark程序完成后按照以下步骤进行编译打包。1.在IntelliJIDEA中打包工程(输出JAR)在菜单栏中选择“File”→“ProjectStructure…”选项,在弹出的对话框中选择“Artifacts”选项,单击“+”按钮,依次选择“JAR”→“Empty”,如图所示。在集群环境中运行Spark在弹出的对话框中,“Name”对应的文本框可自定义JAR包的名称,为“word”,双击右侧栏“HelloWorld”下的“'HelloWorld'compileoutput”,会转移到左侧,如图所示。表示已添加工程至JAR包中,再单击右下角的“OK”按钮即可。在集群环境中运行Spark2.编译生成构件构件(Artifact)是指在软件构建过程中生成的可部署或可执行的文件。Artifact包含了项目的源代码、依赖项以及其他必要的资源,可以被部署到目标环境中进行运行或使用。选择菜单栏中的“Build”→“BuildArtifacts”命令,如图所示。在集群环境中运行Spark在弹出的窗体中选择“Build”选项,如图所示。在集群环境中运行Spark生成Artifact后,在工程目录中会有一个/out目录,可以看到生成的JAR包,如图所示。在集群环境中运行Spark右键单击“word.jar”,在弹出菜单中选择“ShowinExplorer”命令,如图所示,可进入JAR包路径。在集群环境中运行Spark3.运行Spark程序将Windows本地的words.jar文件上传至Linux的/opt目录下,将jieba-analysis-1.0.2.jar文件上传至Spark安装目录的jars目录下。进入Spark安装目录的bin目录下,使用spark-submit提交Spark程序至集群中运行。--master设置连接的集群URL参数为YARN集群模式,--class设置程序入口,再设置JAR包路径、输入文件路径和输出文件路径。在集群环境中运行Spark在HDFS的/user/root/word_count目录下查看结果part-000000文件,如图所示在集群环境中运行Spark4.优化spark-submit提交程序命令spark-submit提交程序除了常用的格式外,还包含了对Spark性能调优的设置,通常是修改Spark应用运行时的配置选项。Spark中的主要配置机制是通过SparkConf类对Spark程序进行配置。SparkConf实例中每个配置选项都是键值对类型的,可以通过set()方法设置。在集群环境中运行Spark如果在程序中通过SparkConf设置了程序运行时的配置,那么在更改时需要对程序修改并重新打包,过程比较繁琐。Spark允许通过spark-submit工具动态设置配置项。当程序被spark-submit脚本启动时,脚本将配置项设置到运行环境中。当创建一个SparkConf时,这些配置项将会被检测出来并进行自动配置。因此,使用spark-submit时,Spark程序中只需要创建一个“空”的SparkConf实例,不需要进行任何设置,直接传给SparkContext的构造方法即可。在集群环境中运行Sparkspark-submit也支持从配置文件中读取配置项的值,这对于一些与环境相关的配置项比较有用。默认情况下,spark-submit脚本将在Spark安装目录中找到conf/spark-default.conf文件,读取文件中以空格隔开的键值对配置项,但也可以通过spark-submit的--properties-File标记指定读取的配置文件的位置。在集群环境中运行Spark如果存在一个配置项在系统配置文件、应用程序、spark-submit提交参数等多个地方均进行了设置的情况,那么Spark有特定的优先级顺序选择实际的配置。优先级最高的是应用程序中set()方法设置的配置,其次是spark-submit传递的参数,接着是写在配置文件中的值,最后是系统默认值。在集群环境中运行Sparkspark-submit为常用的Spark配置项提供了专用的标记,而没有专用标记的配置,可以通过通用-conf接收任意Spark配置项的值。Spark的配置项有很多,常用的配置项如表所示。选项描述--nameName设置程序名--jarsJARS添加依赖包--driver-memoryMEMDriver程序使用的内存大小--executor-memoryMEMExecutor使用的内存大小在集群环境中运行Spark续上表选项描述--total-executor-coresNUMExecutor使用的总内核数--executor-coresNUM每个Executor使用的内核数--num-executorsNUM启动的Executor数量spark.eventLog.dir保存日志相关信息的路径,可以是hdfs://开头的HDFS路径,也可以是file://开头的本地路径,路径均需要提前创建spark.eventLog.enabled是否开启日志记录spark.cores.max当应用程序运行在Standalone集群或粗粒度共享模式Mesos集群时,应用程序向集群请求的最大CPU内核总数(不是指每台机器,而是整个集群)。如果不设置,那么对于Standalone集群将使用spark.deploy.defaultCores中的数值,而Mesos将使用集群中可用的内核在集群环境中运行Spark设置spark-submit提交词频统计程序时的环境配置和运行时所启用的资源。分配给每个executor的内核数为1,内存为1GB。项目7

基于Spark开发环境实现广告流量检测违规识别项目实施开发环境下实现流量数据违规识别模型应用开发环境下实现流量数据违规识别在项目4~6中,分步实现了广告流量数据的检测违规识别,代码分散,为便于他人使用,通过IDEA工具进行代码封装。集群连接参数设置由于流量数据保存在Hive,要使用Scala工程访问操作Hive表数据,则需要准备好如下配置。切换至Hadoop安装目录的/sbin目录,执行命令“./start-all.sh”启动Hadoop集群,如图所示。集群连接参数设置启动Hive的元数据服务。新建一个名为SparkSQL的Scala工程,创建好后,右键单击SparkSQL,依次选择“New”→“Directory”,创建名为“resources”的文件夹,将Hive安装目录的/conf目录将hive-site.xml复制到SparkSQL工程下的resources文件夹中,并参考本项目第(三)小节,添加Spark开发依赖,SparkSQL工程结构界面如图所示。封装代码在SparkSQL工程里,右键单击SparkSQL工程下的src文件夹,依次选择“New”→“Package”选项,新建一个包,包名为“com.tipdm.demo”,在com.tipdm.demo包里编写Spark程序实现以下功能。连接到Hive数据库,并读取流量检测数据。对读取的数据进行清洗操作,包括数据预处理、缺失值处理等。使用随机森林算法对清洗后的数据进行建模和训练。封装代码封装代码的实现步骤如下。右键单击com.tipdm.demo包,依次选择“New”→“ScalaClass”选项,在包下新建一个Scala类,并指定类型为Object,新建Data_Preprocessing类,实现数据清洗步骤。右键单击com.tipdm.scalaDemo包,依次选择“New”→“ScalaClass”选项,在包下新建一个Scala类,并指定类型为Object,新建Building_Features类,实现特征构建步骤。右键单击com.tipdm.scalaDemo包,依次选择“New”→“ScalaClass”选项,在包下新建一个Scala类,并指定类型为Object,新建Building_Model类,实现搭建模型步骤。运行Spark程序将Spark程序提交到spark-submit中运行,其步骤如下。在IntelliJIDEA中打包工程生成的SparkSQL.jar包输出。将SparkSQL.jar包上传至Linux的/opt目录下,进入Spark安装目录的/bin目录下,使用spark-submit提交Spark程序至集群中运行,运行结果如图所示。运行Spark程序需要注意的是,由于随机森林是一种基于集成学习的算法,在构建每个决策树时会进行随机特征选择和随机样本选择。因此,每次构建不同的决策树,最终的模型结构和性能可能会有所不同,模型评估的准确度/率会存在一些细微差别。开发环境下实现流量数据违规识别模型应用模型应用在应用分类器进行虚假流量识别时,首先需要对得到的流量监测数据进行模型数据处理,得到可以输入分类器的模型数据,再加载分类器对这些数据进行预测,将预测结果返回即可。右键单击src,依次选择“New”→“ScalaClass”选项,在包下新建一个Scala类,并指定类型为Object,新建Application类,通过加载存储好的随机森林分类模型,进行虚假流量预测。模型应用将程序打包上传至/opt目录下,执行“./spark-submit--classApplication/opt/SparkSQL.jar”命令运行程序,运行结果如图所示。真实场景中后期训练的数据没有label标签的,但是由于在模拟情况下,所使用的数据依旧包含了标签列,因此可以对新数据的预测结果进行准确率计算,通过图所示的计算的结果可以了解到,保存的模型再次加载后并不会损失模型的效果。项目总结本项目首先介绍了如何搭建Java开发环境以及Spark开发环境,通过开发环境搭建,实现Spark程序在集成开发环境下运行。然后对广告流量检测数据的数据预处理、特征构建以及模型搭建代码进行封装。最后在IntelliJIDEA中打包工程输出JAR包在集群下运行。通过本项目的集成开发环境介绍,使得在实际应用开发中,业务任务的代码量较多的情况下,能够使用集成开发环境来协调完成任务。项目7

基于Spark开发环境实现广告流量检测违规识别技能拓展+测试题技能拓展Spark注重建立良好的生态系统,不仅支持多种外部文件存储系统,提供了多种多样的集成开发环境。Eclipse本身不支持Scala语言,但是有一个插件Scala-IDE,利用该插件,Eclipse就能很好的支持Scala语言的开发。在Scala-IDE官网安装专门开发的Scala的Eclipse,安装时保证Scala-IDE插件与本地的Scala版本一致。技能拓展从官网下载后,解压压缩包,进入路径..\scala-SDK-4.7.0-vfinal-2.12-win32.win32.x86_64\eclipse,双击“eclipse.exe”应用程序,即可以在Eclipse运行Spark程序,基本流程如图所示。技能拓展新建一个名为WordCount的工程,并运行Spark程序的步骤如下。新建Scala工程。单击Eclipse界面左上角“File”,在弹出窗口中单击New,选择ScalaProject,如图所示。技能拓展配置Scala工程。输入工程名“WordCount”,单击“Finsh”按钮后,Scala工程就创建完成了,如图所示。技能拓展添加Spark开发依赖包。鼠标右击WordCount,在弹出窗口中单击“BuildPath”选项,在菜单栏选择“ConfigureBuildPath”选项,如图所示。技能拓展在弹出的“PropertiesforWordCount”对话框中,左侧选项框保持默认设置“JavaBuildPath”,然后单击“Libraries”选项卡,选择“AddExternalJARs…”按钮。在弹出的界面中找到Spark安装目录下的jar

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论