还剩9页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
Spark大数据分析与实战西安电子科技课程名称Spark大数据分析选用教材出版社大学出版社(第2版)在学习Scala语法基础上,编写项目2编写Scala程序处理早P教学内容Scala代码完成新能源汽车销售授课学时4新能源汽车销售数据数据的处理授课班级授课日期授课地点****专\[]/*****班
(1)了解Ubuntu环境下的Scala安装;
(2)熟悉Scala的基础语法,能够编写简单的程序;
(3)熟悉分支、循环结构,掌握if、for、while的用法;教学目标
(4)掌握数组、列表、映射、集合等容器的常见用法;
(5)掌握函数的定义方法,能够书写简单的匿名函数;
(6)了解面向对象的基本概念,能够自定义类;
(7)熟悉模式匹配,掌握样例类的定义方法
(1)Scala中的分支与循环结构;
(2)组合数据类型Array、List、Tuple、Set、Map的基本用法;重点难点
(3)匿名函数及高阶函数的用法;
(4)模式匹配的使用D讲授口讨论或座谈口问题导向学习口分组合作学习口案例教学口任务驱动教学方法因项目教学口情景教学口演示汇报口实践教学口参观访问口引导文教学□其他(--)
(1)教材《Spark大数据分析与实战(第2版)》教学准备(教
(2)硬件设备内存8G(或以上)的计算机师)
(2)教学资源课件PPT、教学日历、相关软件等
(1)教材《Spark大数据分析与实战(第2版)》教学准备(学
(2)硬件设备内存8G(或以上)的计算机生)
(3)教学资源课件PPT、相关软件等教学内容与过程教学环节(教学内容、教学方法、组织形式、教学手段)教师通过课程教学平台或班级群发布学习预习任务及课程资源;学生提前预习相关内容,并完成课前自测课前组织等在Scala中,使用了case关键字的类定义就是就是样例类(case classes),样例类是种特殊的类,经过优化以用于模式匹配样例类没有类主体(也无需大括号),样例类也没有方法;Spark中常用于快速保存数据的类,在本教材的Spark SQL部分将有所应用Scala语言是Spark编程的首推语言,它是一种面向对象的语言,又是一种函数式语言本项目首先介绍了Scala的基础语法(数据类型、变量、运算符等),进而学习了程序设计中两种重要的结构(分支与循环);对于批量数据保存,学习了数组、List、Map、Set等“容器”类型,这些“容器”将在后续的Spark总结评价数据分析中有着重要的应用;函数在Scala中有着重要的地位,对于函数、匿名函数需重点掌握;而对于面向对象部分,初学者了解基本的概念,会书写简单的类即可任务
2.
12.
17.tgz-C/usr/local#解压至U/usr/local目录下安装完毕后,把scala命令所在的目录“/usr/local/scala/bin”增加到path中;在Ubuntu终端,输入“scala”命令,即可进入Scala简易开发环境hadoop@zsz-VirtualBox:~$___________一进入编程环境hadoop@zsz-VirtuaLBox:-$|scala|.ScalaWelcome toScala
2.
12.17Java HotSpotTM64-Bit ServerVM,Java
1.8,
0221.Type inexpressions forevaluation.Or try:help.scala10+2♦,输入命令res0:Int=30返回执行结果编程,从这里开始!”scala println“Spark编程,从这里开始!Spark课程内容描—退出环境或强制退出scala[quit|Scala ctr+chadoop@zsz-VirtualBox:*$|述文本编辑器(gedit等)书写HelloWorld.scala;使用命令编译、执行scalac HelloWorld.scala打开9▼E HelloWorld.scala保存S三-□x-/mycodescala-classpath.HelloWorld1object HelloWorld{2defmainargs:Array[String]={“少年强则国强”3printin少年智则国智,,4printin““有志青年,技能报国”5printinScala-制表符宽度8▼第8行,第1列▼插入任务
2.2分析某电动汽车的市场地位1,数据类型与变量现实生活中,我们使用的数据形态多样,囊括整数、小数、文本(文字符号)等;在程序设计中,也需要对数据的类型加以区分,从而完成不同的操作(例如数值可以进行四则运算,文本可以表示一个人的名字等序号数据类型描述举例位有符号补码整数数值区间为到1Byte8-12812720位有符号补码整数数值区间为到2Short16-32768327672020位有符号补码整数数值区间为到3Int32-21474836482147483647202002244Long64位有符号补码整数数值区间为-9223372036854775808到2020022410029223372036854775807位,标准的单精度浮点数5Float32IEEE
7543.14f位标准的双精度浮点数6Double64IEEE
7543.14位无符号字符,区间值为到7Char16Unicode U+0000U+FFFFa字符序列8StringHike Spark布尔型,或9Boolean truefalse true程序设计中为了方便获取某个内存单元中的数据,会使用“标识符”来表示这个内存单元,该“标识符”即称为变量Scala程序中,使用val关键字来定义的变量,又称为常量;程序运行过程中,常量一旦确定好其值后,不允许改变重新赋值变量就是程序运行过程中可以改变重新赋值的量,变量使用关键字var来定义
2.运算符运算符告诉Scala执行什么样的命令在数学领域,我们可以执行加减乘除等运算;在Scala编程中,也提供了算术、关系、赋值、逻辑等运算每一种运算,都使用一个独特的符号来表示,用于告诉Scala编译器需要执行什么样的计算逻辑序号运算符■1示例描述1加号A+B运算结果为302减号A-B运算结果为・103乘号A*B运算结果为2004除号B/A运算结果为25取余B%A运算结果为0序号运算符描述示例1等于,判断是否相等A==B运算结果为false1=*2不等于A!=B运算结果为true3大于A B运算结果为false4小于A B运算结果为true5大于等于A=B运算结果为false6小于等于A=B运算结果为true序号运算符描述示例1简单的赋值运算,指定右边操作数赋值C=A+B将A+B的运算结给左边的操作数果赋值给c2相加后再赋值,将左右两边的操作数相C+=A相当于C=C+A加后再赋值给左边的操作数3相减后再赋值,将左右两边的操作数相C-=A相当于C=C-A减后再赋值给左边的操作数4相乘后再赋值,将左右两边的操作数相C*=A相当于C=C*A乘后再赋值给左边的操作数5相除后再赋值,将左右两边的操作数相C/-A相当于C-C/A除后再赋值给左边的操作数
3.If分支结构在实际业务中,经常需要对数据进行差异化处理(不同值、类型采取不同的处理方法),或者根据不同条件执行不同功能代码,这时候可以使用if判断语句;Scala中if条件语句用法与Java等基本一致If(判断条件){//如果判断条件成立,执行代码块1代码块1}else{//如果判断条件不成立,执行代码块2代码块
2.3统计某品牌的销售数量
1.数组数组是程序设计中一个重要的数据结构,类似于一个容器,可以存储若干同类型的数据数组中的数据亦称为元素;Scala中数组Array的书写形式如下var arrayName:Array[T]=new Array[T]Num对于数组而言,可以使用下标访问其中的某个元素或者给某元素赋值与Java、C语言类似,Scala中数组的下标也是从0开始的,也可以在声明数组的时候直接给数组元素赋值scala var nums:Array[Int]=new Array[Int]3〃数组nums存储3个Int类型的数据,默认值均为0varnums:Array[Int]二Array0,0,0scala nums0=10//修改数组nums的第1个元素下标为0的元素值为10scala nums1=20//修改数组nums的第2个元素下标为1的元素值为20scala nums2=30//修改数组nums的第3个元素下标为2的元素值为30scala var cars:Array[String]=Array〃BYD〃,“Xiao Mi〃,〃Li Xiang//定义数组,同时为其元素赋值varcars:Array[String]=Array(BYD,Xiao Mi,Li Xiang)scala printin(〃第一辆汽车〃+cars(O))//打印输出数组cars的第1个元素(下标为零的元素)第一辆汽车BYD
2.循环结构程序中,也可能需要多次执行同一行语句或者块代码,这是就用到循环结构几乎所有的程序设计语言都有循环,Scala中的循环包括for循环、while循环;其中for循环的语法结构如下for(变量-容器){循环体语句J“变量-容器”表示针对某个容器(数组就是一种典型的容器),逐个读取容器中的元素,然后赋值给某个临时变量,进而执行循环体语句;for循环执行流程如图2-11所示for循环有循环次数限定,而while循环则没有循环次数限定;while循环预设一个循环条件,只要该条件成立(结果为true),则重复执行循环体内的代码块(循环体内的语句);while循环的语法格式如下while(循环条件){循环体语句while循环的逻辑如图2-12所示falsetrue/、__________________V——循环体语句
3.字符串的处理Scala直接使用了Java的字符串类,其用法与Java字符串一致Scala中字符串使用双引号包裹,提供了丰富的方法帮助实现相关功能序号方法功能说明1length返回字符串的长度(包含的字符数)2equals判断两个字符串是否相等startsWith/endsWith3判断字符串是否以指定的字符串开头/结尾4replace将字符串中指定的字符串替换成指定的字符串;5contains判断字符串中是否包含指定的字符串6substringstart end/字符串截取,从指定的下标索引开始和结束,范围是左闭右开7split字符串切割,按照指定的字符串对原字符串进行切割,得到一个字符串数组8trim不改变原有字符串内容,只是去除字符串首尾的空白字符,包括空格、\t、\r、\n
4.文件的操作Scala提供了Source类及伴生对象来读取文件(关于类、伴生对象的概念将在任务
2.5中介绍)scala valdata=Source.fromFile,z/home/hadoop/data/test.txtz,//读取文件,返回一个迭代器类似于数组)scala vallines=data.getLines//文件的每一行成为迭代器lines的一个元素任务
2.4计算某热销车型的月均销售量
1.元组Tuple元组Tuple是大数据处理中常用的数据类型,它可以包含不同类型的数据元素;元组使用小括号将这些数据元素包裹起来,数据元素之间用逗号分隔代码new TupleN元素1,元素2,・・・可以创建元组,其中N为元组中元素的数量,N不能超过22;也可以直接简写为元素1,元素2,.一
2.列表List列表List类似于数组,存储的元素通常为相同数据类型;但列表List是不可变的,List列表一旦生成,其元素不可改变scala valcars:List[String]二List〃BYD〃,〃Li Xiang”,〃HUWEI〃scala valcars=List〃BYD”,〃Li Xiang”,〃HUWEI〃//简化形式,与上一行等效
3.集合SetSet集合是没有重复的对象集合,且元素间没有顺序scala valfruits=Set apple,orange,grape,blueberry//创建Setscala fruits,contains/zorangez,//判断Set中是否包含orangescala fruits,take3//获取Set的前3个元素,返回一个新Set
4.映射MapMap映射是一种可迭代的键值对key/value结构;Map中键Key是唯一的,所有的值Value都可以通过键Key来获取Map中所有的键与值构成一种对应关系,这种对应关系即为映射scala valstudent二Map〃Toni”-18,“Jerry〃-20,“Petter〃-19scala valstudent=MapTom”,18,Jerry”,20,Petter,19scala studentJerry//获取Jerry对应的Value值,
205.高阶函数高阶函数Higher-Order Function就是操作其他函数的函数;如果一个函数使用另外一个函数作为参数,或者返回另外一个函数作为结果,那么这个函数就可以称为高阶函数scala defadda:Int,b:Int:Int=a+b//定义一个函数,计算两整数的和//定义一个函数,计算两整数的积scala defmultiplya:Int,b:Int:Int=a*bscala defcal(f:(Int,Int)=Int,a:Int,b:Int)=f(a,b)//,第1个参数为某函数scala cal(add,10,20)//调用cal函数,第1个参数为add函数val res30:Int=30任务
2.5计算各大品牌的市场占有率
1.类与继承在Scala中,使用class关键字创建一个类,语法格式如下class类名(参数1参数类型,参数1参数类型,.・.){成员变量成员方法class是定义类的关键字,表明需要创建一个类;类名称后面可以加若干个参数(也可以没有参数),称之为类参数类的主体部分为若干成员变量和成员方法,成员变量可以理解为描述类的属性(数据),成员方法代表类所具有的功能
2.继承与特质继承是面向对象的一个重要概念,当一个类继承另外一个类时,将自动获取另一个类的公有属性和方法原有的类称为父类,而新的类称为子类子类除了拥有父类的所有的属性及方法外,也可以拥有自己独特的属性与方法,还可以把父类中不合适的方法覆盖重写,从而展现更强大的功能Scala使用extends关键字来表示继承关系,其语法格式如下class子类(参数1,参数2,参数3,・・.)extends父类(参数1,参数2,...){子类的主体}
3.模式匹配与样例类
(1)模式匹配if else条件语句可以根据不同的条件执行不同的代码,实现不同的功能;但当分支较多时,书写带来不够方便,处理的灵活度也不高为此,Scala提供了功能强大的模式匹配,可以实现条件判断、类型检查、“解构”等多种功能一个模式匹配包含了一系列备选项,每个都开始于关键字case每个备选项都包含了一个模式及一到多个表达式箭头符号=隔开了模式和表达式
(2)样例类。
个人认证
优秀文档
获得点赞 0