scala知识点(二)
Scala允许使用三个引号来进行多行字符引用:(引自)
val longString = """Line 1
Line
Line """;
1.正则表达式:
与正则表达式相关的类是scala.util.matching.Regex类,要构造一个Regex对象,使用String类的r方法即可,如果正则表达式中包含反斜杠或引号之类的需要转义的字符,那么最好是使用原始(raw)字符串,以三个”号包围
val apacheLogRegex =
"""^([\d.]+) (\S+) (\S+) \[([\w\d:/]+\s[+\-]\d{4})\] "(.+?)" (\d{3}) ([\d\-]+) "([^"]+)" "([^"]+)".*""".r
def extractKey(line: String): (String, String, String) = {
apacheLogRegex.findFirstIn(line) match {
case Some(apacheLogRegex(ip, _, user, dateTime, query, status, bytes, referer, ua)) =>
if (user != "\"-\"") (ip, user, query)
else (null, null, null)
case _ => (null, null, null)
}
}
apacheLogRegex.findFirstIn(line) // 在line中找到首个匹配apacheLogRegex的匹配项
findPrefixOf() //方法检查某个字符串的开始部分是否能够匹配。
findAllIn() //方法返回遍历所有匹配项的迭代器
2.case Some() && case None
def showCapital(x: Option[String]) = x match {
    case Some(s) => s
    case None => "?"
}
当你的Option里面有东西的时候,这个List的长度是1(也就some), 当你的Option里没有东西的时候,它的长度是0(也就是 None)。
3.累加器和广播变量
累加器:提供了将工作节点中的值聚合到驱动器程序中的简单语法,累加器的一个常见用途是在调试时对作业执行过程中的事件进行计数。工作节点上的任务不能访问累加器,此时来看,累加器只是一个只写变量,为了保证累加器的容错性,对于要在行动操作中使用的累加器,spark只会把每个人物对累加器的修改应用一次。
累计器的用法总结:
- 通过在驱动程序中调用SparkContext.accumulator(initiaValue)方法,创建出存有初始值的累加器,返回org.apache.spark.Accumlator[T]对象,其中T是初始值initialValue的类型
 - spark闭包的执行器代码可以使用累加器的+=方法增加累加器的值
 - 驱动程序可以调用累加器的value属性来访问累加器的值。
 
广播变量:它可以让程序高效地向工作节点发送一个较大的只读值,当应用需要向所有节点发送一个很大是只读查询表是,广播变量用起来比较顺手。
广播变量的用法总结:
- 通过对一个类型T的对象调用SparkContext。broadcast创建出一个Broadcast[T]对象。任何可序列化的类型都可以这么实现。
 - 通过查找value属性访问该对象的值
 - 变量只会被发送到各个节点一次,应作为只读值处理
 
4.缓存和持久化级别
org.apache.spark.storage.StorageLevel中的持久化级别:
| 级别 | 使用的空间 | CPU时间 | 是否存在内存中 | 是否存在磁盘上 | 备注 | 
| MEMORY_ONLY | 高 | 低 | 是 | 否 | |
| MEMORY_ONLY_SER | 低 | 高 | 是 | 否 | |
| MEMORY_AND_DISK | 高 | 中等 | 部分 | 部分 | 如果数据在内存中放不下,则溢写到磁盘上 | 
| MEMORY_AND-DISK_SER | 低 | 高 | 部分 | 部分 | 如果数据在内存中放不下,则溢写到磁盘上,在内存中存放序列化后的数据 | 
| DISK_ONLY | 低 | 高 | 否 | 是 | 
scala知识点(二)的更多相关文章
- Scala 知识点掌握1
		
Scala知识点巩固 1.Scala简介 Scala是一门面向对象和面向函数的编程语言,是一门静态编程语言,如 Java Scala(变量类型在编译阶段确定):源码文件需要基于 JVM 运行的. 动态 ...
 - Java 8 vs. Scala(二):Stream vs. Collection
		
[编者按]在之前文章中,我们介绍了 Java 8和Scala的Lambda表达式对比.在本文,将进行 Hussachai Puripunpinyo Java 和 Scala 对比三部曲的第二部分,主要 ...
 - MySQL:表的操作 知识点难点总结:表完整性约束及其他常用知识点二次总结🙄
		
表操作 一 : 修改表表表表表表表表表: ALTER TABLE 语法 1. 改表名rename alter table 表名 rename 新表名 2. 增加字段add alter table 表名 ...
 - Scala学习(二)--- 控制结构和函数
		
控制结构和函数 摘要: 本篇主要学习在Scala中使用条件表达式.循环和函数,你会看到Scala和其他编程语言之间一个根本性的差异.在Java或C++中,我们把表达式(比如3+4)和语句(比如if语句 ...
 - Scala 知识点掌握2
		
Scala 基础知识点巩固2 1.集合中常用的函数 sum / max / min # 定义一个List[Int]val list1 = List(1,3,4,6,8,9)# 取集合中所有元素的和li ...
 - Scala学习二十二——定界延续
		
一.本章要点 延续让你可以回到程序执行当中之前的某个点; 可以在shift块中捕获延续 延续函数一直延展到包含它的reset块的尾部 延续所谓的”余下的运算“,从包含shift的表达式开始,到包含它的 ...
 - Scala学习二十一——隐式转换和隐式参数
		
一.本章要点 隐式转换用于类型之间的转换 必须引入隐式转换,并确保它们可以以单个标识符的形式出现在当前作用域 隐式参数列表会要求指定类型的对象.它们可以从当前作用域中以单个标识符定义的隐式对象的获取, ...
 - Scala学习二十——Actor
		
一.本章要点 每个actor都要扩展Actor类并提供act方法 要往actor发送消息,可以用actor!message 消息发送是异步的:”发完就忘“ 要接受消息,actor可以调用receive ...
 - Scala(二)——基础语法(与Java的区分)和函数式编程
		
Scala快速入门(二) 一.键盘输入 关于基本类型的运算,以及复制运算,条件运算,运算符等知识,均和Java语言一样,这里不过多叙述. val name = StdIn.readLine() Std ...
 
随机推荐
- 小白日记23:kali渗透测试之提权(三)--WCE、fgdump、mimikatz
			
WCE windows身份认证过程 http://wenku.baidu.com/view/cf2ee127a5e9856a56126017.html #特例在登陆的目标服务器/系统,有一个w摘要安全 ...
 - mongoDB操作命令及mongoDB的helper
			
此项目已开源,开源地址是: http://mongodbhelper-csharp.googlecode.com/svn/trunk/ mongodb的helper using System; usi ...
 - sql语句判断方法之一
			
sql语句判断方法之一CASE语句用法总结 背景: Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN ' ...
 - 给jdk写注释系列之jdk1.6容器(10)-Stack&Vector源码解析
			
前面我们已经接触过几种数据结构了,有数组.链表.Hash表.红黑树(二叉查询树),今天再来看另外一种数据结构:栈. 什么是栈呢,我就不找它具体的定义了,直接举个例子,栈就相当于一个很窄的木桶 ...
 - Scala中的元组
			
元组 元组使用()表示的数据结构 元组使用()表示的数据结构 还可以使用模式匹配访问 使用场景非常有限,用于函数返回值不止1个的情况下 看代码: /** * 元组 * @author Administ ...
 - ClassLoader类加载器
			
总的来说,当动态加载一个资源时,至少有三种类加载器可供选择: 系统类加载器(也被称为应用类加载器)(system classloader) 当前类加载器(current classloader) 当前 ...
 - android开发推荐书籍列表
			
1. <第一行android代码> 入门,简单易懂,全面. 2. << Android群英传 >> 特点:UI部分相当详细 3. <<深入理解Andr ...
 - visual studio 2013 快捷键大全、VS2013常用快捷键
			
Visual Studio 2013 是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具.代码管控工具.集成开发环境(IDE)等等.VS 2013 中新增了很多提高 ...
 - IE升级代码时邮件内容
			
TypeErrorUnable to set property 'value' of undefined or null reference. 但是可以进入添加页面,填完信息后,submit后跳转至 ...
 - 【转】Github入门教程
			
原文 http://www.eoeandroid.com/thread-274556-1-1.html [初识Github] 首先让我们大家一起喊一句“Hello Github”.YEAH!就是这样. ...