创建 Maven 项目 2.1.1 增加 Scala 插件 Spark 由 Scala 语言开发的,所以本课件接下来的开发所使用的语言也为 Scala,咱们当 前使用的 Spark 版本为 3.0.0,默认采用的 Scala 编译版本为 2.12,所以后续开发时。我们依 然采用这个版本。开发前请保证 IDEA 开发工具中含有 Scala 开发插件
String 方法 char charAt(int index) 返回指定位置的字符 从0开始 int compareTo(Object o) 比较字符串与对象 int compareTo(String anotherString) 按字典顺序比较两个字符串 int compareToIgnoreCase(String str) 按字典顺序比较两个字符串,不考虑大小写 String co
高阶函数 scala中函数和IntString、Class等其他类型处于同等地位 可以向其他类型的变量一样被传递和操作 作为值的参数 可以将函数传递给一个方法 object demo01 { def main(args: Array[String]): Unit = { val func = (num:Int) => "*" * num println((1 to 10).
类和对象 创建类和对象 main方法必须放在Object中 如果类是空的,没有任何成员,可以省略{} 如果构造器的参数为空,可以省略() object demo01 { //创建类。省略花括号 class Person def main(args: Array[String]): Unit = { //创建对象。省略括号 val person = new P
object test10 { def main(args: Array[String]): Unit = { def fun(i: Int): String => (Char => Boolean) = { def f1(s: String): Char => Boolean = { def f2(c: Char): Boolean = { if (i == 0 && s == "" &am
Scala介绍 什么是Scala Scala是一种支持通用编程范式的编程语言,选择Scala作为硬件开发语言的原因如下: 它是托管嵌入式DSL的一种很好的的语言;它具有强大而优雅的库,用于处理各种数据集合;有严格的类型系统,有助于在开发周期的早期(即,编译时)捕获一大类错误;具有强大的表达和传递功能
package com.grady import org.apache.hadoop.hbase.HBaseConfiguration import org.apache.hadoop.hbase.client.Result import org.apache.hadoop.hbase.io.ImmutableBytesWritable import org.apache.hadoop.hbase.mapreduce.TableInputFormat import org.apache.hadoop.h
Scala程序编译执行流程 变量 // val/var 变量标识:变量类型 = 初始值 // var 可以被重新赋值 // var 不可以被重新赋值 // scala语句的最后不需要添加分号 val name:String = "tom" 使用类型推断来定义变量 // scala可以自动根据变量的值来自动推断变量的类型 val name = "tom" 惰
条件表达式 有返回值的if // scala中,条件表达式也是有返回值的 // scala中,没有三元表达式,可以使用if表达式替代三元表达式 val sex = "male" val result = if(sex == "male" 1 else 0) 块表达式 // 块表达式也是有返回值的 // 返回的是最后一个表达式的值 val a = { println("
Spark学习笔记[1]-scala环境安装与基本语法 正所谓工欲善其事必先利其器,Spark的开发语言不是java而是scala,虽然都是运行于JVM,但是两门语言的基本特性还是有些不一样,这里说明一个概念,JVM不等于JAVA,任何语言只要能编译出符合JVM规范的class文件,都可以运行在JVM上 相比
object 匹配元组 { def main(args: Array[String]): Unit = { // 1.长度为3,以元素1开头,剩余元素任意 val tuple1 = (1, 2, 3) // 1.长度为3,以元素5结尾,剩余元素任意 val tuple2 = (3, 4, 5) // val tuple3: Any = (3, 4, 5, 6, 7) tuple1 match
import java.text.SimpleDateFormat import java.util.Date object 日期工具类 { object DateUtils { var sdf: SimpleDateFormat = null // 日期转字符串 def date2String(date: Date, template: String): String = { sdf = new SimpleDateFormat(t
1. 新建工程 File -> New -> Project 2. Maven 下一步, 必须找到Java 的JDK 3. 新建工程文件,配置GroupId,一般com.company-name。 项目名称。 4. 在根目录下新建文件夹scala,然后mark directory as "source root" 4. 增加scala插件 Setting
Scala 五 模式匹配模式匹配-类型模式匹配-正则表达式模式匹配-对象样例类样例对象 Option类型偏函数(PartialFunction) 模式匹配 模式匹配时, 会从第一个 case分支开始, 如果匹配成功, 则执行对应的逻辑代码, 并结束当前模式匹配. 如果所有 case都不匹配, 那么会执行 c
协变:在期望接收一个基类集合的地方使用子类实例集合的能力 逆变:在期望接收一个子类集合的地方使用基类实例集合的能力 在默认情况下,scala不允许使用协变和逆变,称之为不变 举个例子:我们定义两个class,一个是Pet,一个是Dog,让Dog继承自Pet。 然后我们调用一个方法,在接Array[
高阶函数案例 需求:模拟 Map 映射、Filter 过滤、Reduce 聚合 object TestFunction { def main(args: Array[String]): Unit = { // (1)map 映射 def map(arr: Array[Int], op: Int => Int) = { for (elem <- arr) yield op(elem) } val arr = map(Array(1, 2, 3, 4), (x:
迁移Spark2.4.2/Scala 2.11 工程项目到Spark 3.0.3/Scala 2.12 的过程,运行工程代码报错: User class threw exception: java.lang.NoSuchMethodError: scala.Predef$.refArrayOps([Ljava/lang/Object;)[Ljava/lang/Object; 乍一看是某一行的引用方式取数组元素报错,但是在Spa
Spark犹如一座巨山,压倒在我的面前 特质 如果特质中只有抽象内容,这样的特质就做瘦接口如果特质中既有抽象内容,又有具体内容,这样的特质叫:富接口 特质的格式 trait 特质名称{ //普通字段 //抽象字段 //普通方法 //抽象方法 } 特质可以继承 cla
Scala 四 集合数组(Array/ArrayBuffer)不可变数组: Array(Scala推荐使用不可变数组可变数组: ArrayBuffer不可变数组与可变数组的转换多维数组 列表(List/ListBuffer)不可变列表: List可变列表: ListBuffer Set集合(Set/mutable.Set)不可变: Set可变: mutable.Set Map集合(
不建议判断 变量 == null 使用Option 进行取值 若导致编译失败 可删除scala-sdk,及工程中的scala包,重新添加,rebuild工程
该项目是用Scala编写的,可以在任何JVM项目中使用(前提是添加ScalaJAR依赖项)。它用于抓取文档,而不是随机数据。它可能可以扩展到这样做,但现在我希望它更多地面向(状态)文档/开放数据,而不是一个商业抓取工具(它经常被反对)。 现在,它的形式或多或少是稳定的,我已经部署了应用程序,并且
以前都是只学习Hive和数仓的基本知识,却忘记了数仓的另一个重要的利器Spark.工欲善其事必先利其器,为了学好spark,我们先要学习好scala Scala中的常量: 学习scala也是为了我们日后学习spark打好基础,今天开始就跟着我来学习scala吧。 scala中的常
文章目录 Scala编程语言入门Scala进阶函数式编程1. 遍历 foreach2. 映射 map3. 扁平化映射 flatMap4. 过滤 filter5. 排序 sort6. 分组 groupBy7. 聚合 reduce8. 折叠 fold 高阶函数1. 函数值作为参数2. 匿名函数3. 柯里化4. 闭包 类1. 类的定义2. 类的构造器 对象1. scala