好程序员大数据培训分享spark之Scala

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介:

  好程序员大数据培训分享spark之Scala,基本语法:变量,变量的定义:不可变:val a = 2 或者 val a : Int = 2 (指定了数据类型) lazy val a : Int =2
可变:var a = 2 或者 var a : Int = 2(指定了数据类型)
def a = 2
定义变量不能1.以数字以及特殊符号(_除外)开头 2.以关键字(var、val、class等)开头
def定义的是??
var 编译后有set 与 get 方☐法 所以可以重新赋值
val 编译后只有get方法 所以不能再赋值了
lazy 惰性变量,只在该变量被调用的时候才实例化,而且后面只能跟val
def 与val 差不多 不能重新赋值 更多修饰方法
Scala变量的类型:Any是scala的顶级类型,Any下有AnyVal(值类型)和AnyRef(引用类型)两个子类
AnyVal : 它有9个类型,其中7个是指类型:Double Float Byte Int Short Long Char 和两个非值类型:Unit Boolean
AnyRef : 是引用类型,它的子类有:List Option 或者自定义的并继承它的class
所有的类型都需要首字母大写
Scala会自动推断类型
Scala数据类型可以从低到高转换 Byte-Short-Int-Long-Float-Double
Char-Int-Long-Float-Double
注意:scala内没有强转
操作符
Scala里没有操作符的概念,所谓的操作符其实都是方法
数学运算:+ - * / : % .+ ( ) 注:x+y 与 x.+(y)等价
关系:< <= > >= ! != ==
位运算: | & ^
如果两个不一样类型的变量进行运算,最终结果的类型是大的那个类型
如果想要格式化输出:var x =5 var y = 5
var n =x + y
print(s”x+y=$n”) 输出结果 x+y=10
当然也可以在结果前面加字符串”x+y”
条件表达式
这种打出来是空,因为else里不是一个值,而是一个赋值语句
正常应该是 var res = if(sex == 1){“男”}else{“女”}
因为大括号里只有一个‘表达式’,大括号可以省略
var res = if(sex == 1)“男”else“女”
for循环
for(i<- 1 to 10){println (i)} //打印1-10
for(i <- 1 until 10){println (i)} //打印1-9
val arr = Array(“java”,”scala”,”python”) //定义一个数组
for(i<- arr){println (i)} //打印数组内容
for(i <- 1 to 3 ;j <- 1 to 3 if(i != j)){println(i*10+j)} //相当于双层for循环
val arr =for(i <- 1 until 10) yield (i) //把0-9循环出来后封装进arr集合
val arr =for(i <- 1 until 10) yield (i*10)
val res2 = for(i <- arr if i%2 == 0) yield i*100 //过滤
val arrf = bf.filter(_ %2==0).map(_ *100) //过滤 _ 是全部数据的意思
在scala中不支持break语句,但在scala 2.8之后 可以利用Breaks方式来实现
方法
def m1(x : Int , y : Int ) : Int = {x + y} //三种声明方式
def m2(x:Int , y:Int) {print(x+y)}
def m3(x:Int , y:Int){x+y}
解释:m1是方法名 xy是int型的参数 括号外的int是返回值类型 x+y是方法
调用:m1 (3,4)
函数
val f1 = (x:Int , y:Int) => x+y //声明
val f1 = (x:Int , y:Int) =>{
val sum = x+y
sum*100} //最后一句作为函数的返回值 函数没有返回值类型
回车之后会看到
f1: (Int, Int) => Int =
这里的function2中的2指的是参数的个数
调用:f1 (3,4) //与方法的调用一致
函数与方法的关系???
我们通过一个案例来探讨:
首先创建一个方法:def func (yAge:Int,mAge:Int):String={
val a : Boolean = yAge >= mAge
val str : String = if(a) "哥哥" else "弟弟"
str
}
我们发现这个条件可以做成一个函数:val m = ( yAge:Int , mAge:Int ) = >{yAge >= mAge}
我们可以调用函数:def func1 (yAge:Int,mAge:Int):String={
val a : Boolean = m(yAge,mAge)
val str : String = if(a) "哥哥" else "弟弟"
}
我们也可以把函数当做一个参数传入到方法中:
def func1(yAge:Int,mAge:Int,f:(Int,Int) =>Boolean):String={
var a= f(yAge,mAge) 或者var a :Boolean = f(yAge,mAge)
val res : String=if(a)"哥哥" else "弟弟"
res
}
调用: println(func1(18,20,m))

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
相关文章
|
2月前
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
156 2
ClickHouse与大数据生态集成:Spark & Flink 实战
|
2月前
|
SQL 机器学习/深度学习 分布式计算
Spark快速上手:揭秘大数据处理的高效秘密,让你轻松应对海量数据
【10月更文挑战第25天】本文全面介绍了大数据处理框架 Spark,涵盖其基本概念、安装配置、编程模型及实际应用。Spark 是一个高效的分布式计算平台,支持批处理、实时流处理、SQL 查询和机器学习等任务。通过详细的技术综述和示例代码,帮助读者快速掌握 Spark 的核心技能。
104 6
|
2月前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第27天】在大数据时代,数据湖技术凭借其灵活性和成本效益成为企业存储和分析大规模异构数据的首选。Hadoop和Spark作为数据湖技术的核心组件,通过HDFS存储数据和Spark进行高效计算,实现了数据处理的优化。本文探讨了Hadoop与Spark的最佳实践,包括数据存储、处理、安全和可视化等方面,展示了它们在实际应用中的协同效应。
130 2
|
2月前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第26天】本文详细探讨了Hadoop与Spark在大数据处理中的协同作用,通过具体案例展示了两者的最佳实践。Hadoop的HDFS和MapReduce负责数据存储和预处理,确保高可靠性和容错性;Spark则凭借其高性能和丰富的API,进行深度分析和机器学习,实现高效的批处理和实时处理。
94 1
|
2月前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
2月前
|
分布式计算 大数据 OLAP
AnalyticDB与大数据生态集成:Spark & Flink
【10月更文挑战第25天】在大数据时代,实时数据处理和分析变得越来越重要。AnalyticDB(ADB)是阿里云推出的一款完全托管的实时数据仓库服务,支持PB级数据的实时分析。为了充分发挥AnalyticDB的潜力,将其与大数据处理工具如Apache Spark和Apache Flink集成是非常必要的。本文将从我个人的角度出发,分享如何将AnalyticDB与Spark和Flink集成,构建端到端的大数据处理流水线,实现数据的实时分析和处理。
75 1
|
3月前
|
分布式计算 大数据 Apache
利用.NET进行大数据处理:Apache Spark与.NET for Apache Spark
【10月更文挑战第15天】随着大数据成为企业决策和技术创新的关键驱动力,Apache Spark作为高效的大数据处理引擎,广受青睐。然而,.NET开发者面临使用Spark的门槛。本文介绍.NET for Apache Spark,展示如何通过C#和F#等.NET语言,结合Spark的强大功能进行大数据处理,简化开发流程并提升效率。示例代码演示了读取CSV文件及统计分析的基本操作,突显了.NET for Apache Spark的易用性和强大功能。
70 1
|
大数据 Java Scala
大数据Scala系列之类
大数据Scala系列之类 类的定义 Scala 访问修饰符基本和Java的一样,分别有:private,protected,public。 如果没有指定访问修饰符符,默认情况下,Scala 对象的访问级别都是 public。
4115 0
|
3月前
|
分布式计算 大数据 Java
大数据-87 Spark 集群 案例学习 Spark Scala 案例 手写计算圆周率、计算共同好友
大数据-87 Spark 集群 案例学习 Spark Scala 案例 手写计算圆周率、计算共同好友
77 5
|
3月前
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
58 3