2023_Spark_实验七:Scala函数式编程部分演示

这篇具有很好参考价值的文章主要介绍了2023_Spark_实验七:Scala函数式编程部分演示。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、Scala中的函数

在Scala中,函数是“头等公民”,就和数字一样。可以在变量中存放函数,即:将函数作为变量的值(值函数)。

def myFun1(name:String):String="Hello " + name

println(myFun1("Tom"))



def myFun2():String = "Hello World"



//值函数:将函数作为变量的值

val v1 = myFun1("Tom")

val v2 = myFun2()

//再将v1 付给myFun1(v1)

println(myFun1(v1))

2、匿名函数


//匿名函数

(x:Int) => x*3

//例子:(1,2,3)---》(3,6,9)

Array(1,2,3).map((x:Int) => x*3)

//由于map方法接收一个函数参数,我就就可以把上面的匿名函数作为参数传递给map方法

3、带函数参数的函数,即:高阶函数

示例1:

(*)首先,定义一个最普通的函数

2023_Spark_实验七:Scala函数式编程部分演示,Scala,spark,scala,大数据

(*)再定义一个高阶函数

2023_Spark_实验七:Scala函数式编程部分演示,Scala,spark,scala,大数据

(*)分析这个高阶函数调用的过程

2023_Spark_实验七:Scala函数式编程部分演示,Scala,spark,scala,大数据


//定义一个最普通的函数

def fun1(name:String):String = "Hello "+ name



import scala.math._

//定义高阶函数:带有函数参数的函数

def someAction(f:(Double) => Double) =f(10)

//测试

someAction(sqrt)

示例2:

//另外一个例子

def mytest(x:Int,y:Int) :Int ={x*y + 100}



//定义一个高阶函数



def myFunction(f:(Int,Int) =>Int,x:Int,y:Int) = f(x,y)

//测试

myFunction(mytest,1,2)

在这个例子中,首先定义了一个普通的函数mytest,然后定义了一个高阶函数myFunction;myFunction接收三个参数:第

一个f是一个函数参数,第二个是x,第三个是y。而f是一个函数参数,本身接收两个Int的参数,返回一个Int的值。

4、闭包

就是函数的嵌套,即:在一个函数定义中,包含另外一个函数的定义;并且在内函数中可以访问外函数中的变量。

2023_Spark_实验七:Scala函数式编程部分演示,Scala,spark,scala,大数据

测试上面的函数:

2023_Spark_实验七:Scala函数式编程部分演示,Scala,spark,scala,大数据


def mulBy(factor:Double)=(x:Double)=>x*factor

//变量

val triple = mulBy(3) //表示乘以3倍的操作

val half = mulBy(0.5) //表示除以2倍的操作



//调用



println(triple(10)+ " " + half(8))

5、柯里化:Currying

柯里化函数(Curried Function)是把具有多个参数的函数转换为一条函数链,每个节点上是单一参数。

2023_Spark_实验七:Scala函数式编程部分演示,Scala,spark,scala,大数据

一个简单的例子:


//柯里化

//一个普通的函数

def mulByOneTime(x:Int,y:Int) = x + y



//柯里化函数



def mulByOneTime1(x:Int) =(y:Int) =>x * y



//简写的方式

def mulByOneTime2(x:Int)(y:Int)= x * y

//测试

mulByOneTime(6,7)

mulByOneTime1(6)(7)

mulByOneTime2(6)(7)

6、高阶函数示例

2023_Spark_实验七:Scala函数式编程部分演示,Scala,spark,scala,大数据

示例1:

//map

//在列表中的每个元素上计算一个函数,并且返回一个包含相同数目元素的列表

val numbers = List(1,2,3,4,5,6,7,8,9,10)

numbers.map((i:Int)=>i*2)

示例2:

//foreach

//foreach 和 map 相似 ,只不过它没有返回值,foreach只要是为了对参数进行作用

val numbers = List(1,2,3,4,5,6,7,8,9,10)

numbers.foreach((i:Int)=>i*2)

示例3:

//filter

//移除任何使得传入的函数返回false的元素

val numbers = List(1,2,3,4,5,6,7,8,9,10)

numbers.filter((i:Int) => i%2==0)

示例4


//zip

//zip把两个列表的元素合成一个由元素对组成的列表里

List(1,2,3).zip(List(4,5,6,7))

示例5:


//partition

//partition根据断言函数的返回值对列表进行拆分

val numbers = List(1,2,3,4,5,6,7,8,9,10)

numbers.partition((i:Int) =>i%2==0)

在这个例子中,可以被2整除的被分到一个分区;不能被2整除的被分到另一个分区。

示例6:


//find

//find返回集合里第一个匹配断言函数的元素

val numbers = List(1,2,3,4,5,6,7,8,9,10)

numbers.find(_ % 3 ==0)

示例7:


//flatten

//flatten可以把嵌套的结构展开

List(List(1,2,3),List(4,5,6)).flatten

示例8:

//flatMap

//flatMap 是一个常用的combinator,它结合了map 和 flatten的功能

val myList = List(List(1,2,3),List(4,5,6))

myList.flatMap(x => x.map(_ * 2))

在这个例子中,分为两步:

1. 将(1,2,3)和(4,5,6)这两个集合合并成一个集合

2. 再对每个元素乘以2文章来源地址https://www.toymoban.com/news/detail-715262.html

到了这里,关于2023_Spark_实验七:Scala函数式编程部分演示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2023_Spark_实验四:SCALA基础

    或者用windows徽标+R  输入cmd 进入命令提示符 输入scala直接进入编写界面 1、Scala的常用数据类型 注意:在Scala中,任何数据都是对象。例如: 1. 数值类型:Byte,Short,Int,Long,Float,Double Byte: 8位有符号数字,从-128 到 127 Short: 16位有符号数据,从-32768 到 32767 Int: 32位有符号

    2024年02月10日
    浏览(46)
  • 2023_Spark_实验三:基于IDEA开发Scala例子

    一、创建一个空项目,作为整个项目的基本框架 二、创建SparkStudy模块,用于学习基本的Spark基础 三、创建项目结构 1、在SparkStudy模块下的pom.xml文件中加入对应的依赖,并等待依赖包下载完毕。 在pom.xml文件中加入对应的依赖 等待依赖包下载完毕 2、若不能自动下载依赖包,

    2024年02月10日
    浏览(36)
  • Spark Scala大数据编程实例

    Scala是一门现代的多范式编程语言,平滑地集成了面向对象和函数式语言的特性,旨在以简练、优雅的方式来表达常用编程模式。Scala的设计吸收借鉴了许多种编程语言的思想,只有很少量特点是Scala自己独有的。Scala语言的名称来自于“可伸展的语言”,从写个小脚本到建立

    2024年02月04日
    浏览(50)
  • 《Spark编程基础Scala版》第一章习题答案

    1、请阐述大数据处理的基本流程。 2、请阐述大数据的计算模式及其代表产品 3、请列举Hadoop生态系统的各个组件及其功能。 4、分布式文件系统HDFS的名称节点和数据节点的功能分别是什么? 名称节点: 数据节点: 5、试阐述MapReduce的基本设计思想 6、YARN的主要功能是什么?

    2024年02月06日
    浏览(76)
  • spark stream入门案例:netcat准实时处理wordCount(scala 编程)

    目录 案例需求 代码 结果 解析          案例需求:         使用netcat工具向9999端口不断的发送数据,通过SparkStreaming读取端口数据并统计不同单词出现的次数         -- 1. Spark从socket中获取数据:一行一行的获取         -- 2. Driver程序执行时,streaming处理过程

    2024年02月07日
    浏览(40)
  • Spark编程实验四:Spark Streaming编程

    目录 一、目的与要求 二、实验内容 三、实验步骤 1、利用Spark Streaming对三种类型的基本数据源的数据进行处理 2、利用Spark Streaming对Kafka高级数据源的数据进行处理 3、完成DStream的两种有状态转换操作 4、把DStream的数据输出保存到文本文件或MySQL数据库中 四、结果分析与实验

    2024年02月03日
    浏览(37)
  • Spark编程实验三:Spark SQL编程

    目录 一、目的与要求 二、实验内容 三、实验步骤 1、Spark SQL基本操作 2、编程实现将RDD转换为DataFrame 3、编程实现利用DataFrame读写MySQL的数据 四、结果分析与实验体会 1、通过实验掌握Spark SQL的基本编程方法; 2、熟悉RDD到DataFrame的转化方法; 3、熟悉利用Spark SQL管理来自不同

    2024年02月03日
    浏览(39)
  • 大数据平台安装实验: ZooKeeper、Kafka、Hadoop、Hbase、Hive、Scala、Spark、Storm

    ​ 在大数据时代,存在很多开源的分布式数据采集、计算、存储技术,本实验将在熟练掌握几种常见Linux命令的基础上搭建几种常用的大数据采集、处理分析技术环境。 相关安装包下载: 链接:https://pan.baidu.com/s/1Wa2U3qstc54IAUCypcApSQ 提取码:lcd8 Hadoop大数据平台所需工具、软件

    2023年04月09日
    浏览(89)
  • spark实验三-spark进阶编程

    实验目标: (1)   掌握在IntelliJ IDEA 中操作spark程序开发 (2)   打包程序提交集群运行 实验说明: 现有一份某省份各地区租房信息文件 house.txt,文件中共有8个数据字段,字段说明如下表所示: 字段名称 说明 租房ID 租房编号 标题 发布的租房标题 链接 网址,可查看租房信息

    2024年04月27日
    浏览(31)
  • Spark编程实验五:Spark Structured Streaming编程

    目录 一、目的与要求 二、实验内容 三、实验步骤 1、Syslog介绍 2、通过Socket传送Syslog到Spark 3、Syslog日志拆分为DateFrame 4、对Syslog进行查询 四、结果分析与实验体会 1、通过实验掌握Structured Streaming的基本编程方法; 2、掌握日志分析的常规操作,包括拆分日志方法和分析场景

    2024年02月20日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包