scala中的case语法与java中的switch语法类似,但比switch更强大: 例子一正则匹配: val Pattern="(s.*)".r val v1="spark";...val r=v1 match { case Pattern(v1)=> "begin s*" case "1"=> "1" case "2"=> "2"...case 1=> "1" case 2=> "2" case 3=> "3" case _=> "default" } println(...case v1 if 5 until 10 contains v1=> "5-10" case _=> "not found" } println(r)//1-5 变形语法:...{ case 1 | "1" | "one" => "one " case "two"=> 2 case s:String => "String" case
第2行:通过type定义枚举类型的别名 第3行:我们的枚举从1开始,后续枚举值一次加1
Scala 类相关 终于来到面向对象的地方了,虽说函数式编程是 Scala 的特性,让人们觉得 Scala 是更好的 Java。但是在架构层面上一直提倡着:小处用函数式编程,大处用面向对象编程。...scala> val tony = new User("tony","123456") tony: User = User@6a0659ac 也可以用 case 类来推断出构造方法的参数都是val类型的...scala> case class ImmutableUser(name:String,password:String) defined class ImmutableUser scala> val...单例对象、伴生对象、Case Class、Trait 2.1 单例对象 在Scala学习笔记(二)中,讲述过Scala 中没有静态修饰符 static,在 object 下的成员全部都是静态的,而且 object...他们的主要用途是可以用于工具类,或者定义 Scala 程序的入口等等。 来看一个伴生对象和伴生类使用的例子。
类似python元类与apply方法类似python中call方法 class Person(name: String, var age: Int){ println("Person") //private...this.name = name } override def toString(): String ={ this.age+this.name } } // object 类命与...class类命相同并且在一个文件中,伴生类,object下的成员都是静态的 , 若有同名的class,这其作为它的伴生类。...在object中一般可以为伴生类做一些初始化等操作 // 使用apply实现单例 object Dog{ private var age = 0 var instance:Dog = null
你可能知道的知识 当你声明了一个 case class,Scala 编译器为你做了这些: 创建 case class 和它的伴生 object 实现了 apply 方法让你不需要通过 new 来创建类实例...class 支持模式匹配 scala> case class A( a: Int ) defined class A scala> case class B( b: String ) defined...没有参数的时候,你是在使用 case object 而不是一个空参数列表的 case class scala> classMath( A ) A(100) 除了在模式匹配中使用之外,unapply...Person(Lacava,Alessandro,1976) 相对用 tuple 来创建 case class 实例,还可以从 case class 实例中解构并提取出 tuple 对象 scala...firstname和birthYear前不再自动添加 val,不再是类的成员 scala> val p = Person("Lacava")("Alessandro", 1976) p: Person
org.apache.http.message.BasicNameValuePair import org.apache.http.util.EntityUtils import org.slf4j.LoggerFactory import scala.collection.JavaConversions...._ import scala.reflect.macros.ParseException object HttpClientUtils { val logger = LoggerFactory.getLogger...response.getEntity() EntityUtils.toString(entity, "utf-8") } finally { response.close() } } catch { case...ex: ClientProtocolException => {logger.error(ex.getMessage);null} case ex: ParseException => {logger.error...(ex.getMessage);null} case ex: IOException => {logger.error(ex.getMessage);null} } finally { // 关闭连接
一个利用Java的IO类进行文件读取的例子: package cn.tzy import java.io....line.isEmpty) println(line.get) else hasNext = false } } catch { case ex:...Scala中无参函数调用的时候可以省略括号 2. Scala中推荐使用Option类,而不是Java中的obj != null这样的判断
/org/apache/flink/table/api/table.scala class Table( private[flink] val tableEnv: TableEnvironment.../org/apache/flink/table/plan/logical/operators.scala case class Sort(order: Seq[Ordering], child: LogicalNode.../org/apache/flink/table/expressions/ordering.scala abstract class Ordering extends UnaryExpression {...] def resultType: TypeInformation[_] = child.resultType } Ordering是一个抽象类,它有Asc及Desc两个子类 Limit flink-table.../org/apache/flink/table/plan/logical/operators.scala case class Limit(offset: Int, fetch: Int = -1, child
的所有核心类都可以在org.apache.flink.api.scala包中找到 而Scala DataStream API的类可以在org.apache.flink.streaming.api.scala...有六种不同类别的数据类型: Java 元组 and Scala Case 类 Java POJOs 原生类型 Regular Classes Values Hadoop Writables Special...Types 7.1 元组 and Case 类 7.1.1 Java版本 元组是包含固定数量的具有各种类型的字段的复合类型。...版本 Scala case类(和Scala元组是case类的特例)是包含固定数量的具有各种类型的字段的复合类型。...7.4 General Class Types Flink支持大多数Java和Scala类(API和自定义)。 限制适用于包含无法序列化的字段的类,如文件指针,I / O流或其他本机资源。
的所有核心类都可以在org.apache.flink.api.scala包中找到 而Scala DataStream API的类可以在org.apache.flink.streaming.api.scala...有六种不同类别的数据类型: Java 元组 and Scala Case 类 Java POJOs 原生类型 Regular Classes Values Hadoop Writables Special...版本 Scala case类(和Scala元组是case类的特例)是包含固定数量的具有各种类型的字段的复合类型。...7.4 General Class Types Flink支持大多数Java和Scala类(API和自定义)。 限制适用于包含无法序列化的字段的类,如文件指针,I / O流或其他本机资源。...遵循Java Beans约定的类通常可以很好地工作。 所有未标识为POJO类型的类都由Flink作为常规类类型处理。 Flink将这些数据类型视为黑盒子,并且无法访问其内容(即,用于有效排序)。
A2 原因 没有导入相应包 A3 解决 在算子前添加 import org.apache.flink.api.scala._ ?
今天要做一个Flink的测试,因此需要创建一个简单的Flink项目,于是找到了下面这种方式来创建一个Flink启动项目。...通过运行下面的命令来创建一个项目 curl https://flink.apache.org/q/quickstart-scala.sh | bash 也可以根据 quickstart-scala.sh...> 2.12.2 下面使用一个例子来测试一下工程,在 src/main/scala/my/flink/quickstart...目录下创建一个 WordCount.scala 文件,内容如下: package my.flink.quickstart import org.apache.flink.api.java.utils.ParameterTool...import org.apache.flink.api.scala._ object WordCount { def main(args: Array[String]) { if (
: // 定义一个输入数据的样例类 保存电商用户行为的样例类 case class MarketingUserBehavior(userId: String, behavior: String,...channel: String, timestamp: Long) // 定义一个输出结果的样例类 保存 市场用户点击次数 case class MarketingViewCount(windowStart...import org.apache.flink.streaming.api.scala....: Long) // 定义一个输出结果的样例类 保存 市场用户点击次数 case class MarketingViewCount(windowStart: String, windowEnd...import org.apache.flink.streaming.api.scala.
启动REPL环境 下载Flink 前往Flink Downloads页面(https://flink.apache.org/downloads.html)下载编译好的Flink程序,这里根据你的Scala...注意,Flink目前对类Unix系统(Linux、macOS)比较友好,尽管Flink可以在Windows默认命令行上运行,但只限于一些基础命令,比如不支持REPL。...flink。流。api。斯卡拉(Scala)。DataStream [ Int ] = org。阿帕奇。flink。流。api。斯卡拉(Scala)。...flink。流。api。斯卡拉(Scala)。DataStream [ String ] = org。阿帕奇。flink。流。api。斯卡拉(Scala)。...使用Flink Flink Scala Shell也支持扩展模式,包括独立的Flink集成和与其他应用程序共享的纱线实现。
在Scala里存在样例类。它的意义是为了减少重复代码,预先给类定义一些常用的方法。在Scala里使用case关键字来描述样例类。...scala> case class Test(name:String) defined class Test scala> val t = Test("a") t: Test = Test(a) scala...> t.name res0: String = a scala> t res1: Test = Test(a) 样例类t可以不使用new关键字就可以创建一个实例,并且构造参数在实例化的时候,就会分配给构造参数一个同名属性...,与一般的类不一样的是,样例类会覆写toString方法,使其返回的更加“正常”。...样例类最大的用途就是用于模式匹配,SparkSQL的解析器就是利用了Scala的模式匹配,大量简化了语法的解析。
数据结构 Flink能处理任何可被序列化的数据结构: 基础数据类型,包括 String、Integer、Boolean、Array 复杂数据结构,包括 Scala case class和 Java POJO...本例使用Scala case class来定义一个股票类,该对象包括三个字段:股票代号、时间戳和价格。真实的股票交易数据比这个更为复杂,这里只是一个简化的模型。...的类定义更为简洁,因为Scala的编译器在编译阶段帮忙生成了不少代码,Java的代码风格有些臃肿。...import org.apache.flink.streaming.api.functions.source.SourceFunction.SourceContext import org.apache.flink.streaming.api.scala...{ /** * Case Class StockPrice * symbol 股票代号 * timestamp 时间戳 * price 价格 */ case
示例 使用 map 操作,将以下数据 “1,张三”, “2,李四”, “3,王五”, “4,赵六”,转换为一个 scala 的样例类。...菌 * @Date: 2020/7/8 10:16 * @Description: */ object BashMapDemo { // 创建样例类,用于封装数据 case...示例 使用 mapPartition 操作,将以下数据"1,张三", “2,李四”, “3,王五”, "4,赵六"转换为一个 scala 的样例类。...import org.apache.flink.api.scala....import org.apache.flink.api.scala.
复合类型 Scala case class Scala case class是Scala的特色,用这种方式定义一个数据结构非常简洁。...所有子字段也必须是Flink支持的数据类型。 下面三个例子中,只有第一个是POJO,其他两个都不是POJO,非POJO类将使用Kryo序列化工具。...辅助类型 Flink还支持Java的ArrayList、HashMap和Enum,Scala的Either和Option。...TypeInformation 以上如此多的类型,在Flink中,统一使用TypeInformation类表示。...注册类 如果传递给Flink算子的数据类型是父类,实际运行过程中使用的是子类,子类中有一些父类没有的数据结构和特性,将子类注册可以提高性能。
一,DataSet and DataStream Flink有一个特殊的类DataSet和DataStream来表示程序中的数据。您可以将它们视为不可变的数据集合,可以包含重复的数据。...有六种类型的数据类型: 1),Java Tuples and Scala Case Classes 2),Java POJOs 3),Primitive Types 4),Regular Classes...5),Values 6),Hadoop Writables 7),Special Types 1,Tuples and Case Classes Scala的case classes(作为案例类的特殊情况的...4,General Class Types Flink支持大多数Java和Scala类(API和自定义)。限制使用于包含无法序列化的字段的类,如文件指针,I / O流或其他本机资源。...遵循Java Bean规则的类通常运行良好。 没有标识为POJO类型的所有类(参见上面的POJO要求)由Flink作为一般类类型处理。
领取专属 10元无门槛券
手把手带您无忧上云