Scala实战
1. Eclipse中设置scala调试器
scala的调试器要选择Scala Application(new debuger)Launcher;开始选择图省事,选择了一个字母少的,亲切的Launcher:Scala JVM Launcher;但是后来发现这个Launcher只能运行,但是无法在调试过程中获取变量值。
2. java和scala交互
有的时候需要clean后再编译,scala才能够读取到java的变化,反之亦然;
3. 关闭Eclipse的自动变异
Scala的编译很慢,和纯java时代不同,想要高效开发,就要关闭掉自动编译功能;否则你将会一半时间耗费在Eclipse的自动编译中,不能自拔;
4. 设置全局变量默认值
对于全局变量,必须要初始化,如果是需要后面调用来进行初始化,那么需要var XX = _这样的写法来进行赋默认值,其实即使XX类没有无参构造函数,也是可以的。
5. Java Scala集合对象无缝转化
Java类和Scala集合对象之间的无缝转换,因为Scala里面的集合类是强集合类,里面有map等操作;当使用java的时候是无缝使用这些方法的;同样对于HashMap,Java有put操作,为了两者之间的这种操作合集,需要使用导入scala.collection.JavaConversion._
6. Seq
scala的Seq可以通过:+进行添加元素,但是注意这个模式是会返回一个新的对象,需要让一个变量来接这个返回值
7. Scala中的三元判断
scala里面不需要三元判断a?b:c,因为在java里面,if-else只是控制结构,没有返回值;但是在scala里面if-else只是表达式可以有返回值的。所以用if-else来完成之前java里面的三元关系。
8. null,option,some
Scala中鼓励不要是用null,而是Option类;Option类里面可以作为类型定义,返回值如果有值将会是Some,空将会返回None;Option其实是一个容器,一个只能放一个值的容器(篮子),可以对于返回值进行遍历,发现没有值就返回None,如果有值则返回Some;
9. spark和spring的netty冲突
发现引入springboot后,spark2.1.10跑步起来了,netty错误;关键字:springboot spark AbstractMethodError,果然后搜到,原来springboot2.x默认使用netty4.1.x,但是spark2.1.x则是使用netty4.0.43.final,netty不兼容导致;只需要在pom中显式声明netty4.0.43的依赖,问题解决。
10. 泛型类化
RDD转化为Vector失败,因为RDD是一个数据容器,所以当然失败,要使用rdd.first().asInstance[SV]的方式。注意在Scala中对于泛型的支持和java不一样,Java中是隐式转换,但是在scala中需要通过asInstance[Type]来进行转换;
11. Task can't serials
老生常谈问题;这个是因为我在map体重包含了一个本地的方法,后来把这个方法放在map外面调用,问题解决。
Scala实战的更多相关文章
- Scala实战高手****第17课:Scala并发编程实战及Spark源码阅读
package com.wanji.scala.test import javax.swing.text.AbstractDocument.Content import scala.actors.Ac ...
- Scala实战高手****第8课:零基础实战Scala最常用数据结构Map和Tuple及Spark源码鉴赏
本课内容1.Map和Tuple在Spark源码中的鉴赏2.Map和Tuple代码操作实战 ------------------------------------------------------- ...
- Scala实战高手****第6课 :零基础实战Scala集合操作及Spark源码解析
本课内容1.Spark中Scala集合操作鉴赏2.Scala集合操作实战 --------------------------------------------------------------- ...
- Scala实战高手****第16课:Scala implicits编程彻底实战及Spark源码鉴赏
隐式转换:当某个类没有具体的方法时,可以在该类的伴生对象或上下文中查找是否存在隐式转换,将其转换为可以调用该方法的类,通过代码简单的描述下 一:隐式转换 1.定义类Man class Man(val ...
- Scala实战高手****第15课:Scala类型参数编程实战及Spark源码鉴赏
1.Scala的类和方法.函数都可以是泛型 2.上界:表示泛型的类型必须是某种类型或者其类型的子类,语法:<: ,对类型进行限定 3.下界:表示泛型的类型必须是某种类型或者其类型的父类,语法:& ...
- Scala实战高手****第14课:Scala集合上的函数式编程实战及Spark源码鉴赏
package com.dt.spark.scala.bascis object Functional_Itearal { def main(args: Array[String]): Unit ...
- Scala实战高手****第13课:Scala模式匹配实战和Spark源码鉴赏
package com.dt.spark.scala.bascis class Dataframework case class Computerframework (name:String,popu ...
- Scala实战高手****第12课:Scala函数式编程进阶(匿名函数、高阶函数、函数类型推断、Currying)与Spark源码鉴赏
/** * 函数式编程进阶: * 1.函数和变量一样作为Scala语言的一等公民,函数可以直接赋值给变量 * 2.函数更常用的方式是匿名函数,定义的时候只需要说明输入参数的类型和函数体即可,不需要名称 ...
- Scala实战高手****第11课:Scala面向接口彻底实战和Spark源码鉴赏
第一点: scala的接口trait中所有方法可以都被实现!! 这种情况一般会是一种工具方法的集合,例如接口 Logging! scala 多种继承用extends ... with .... 在老 ...
随机推荐
- <Java><类与对象><OOP>
Overview 类 封装(encapsulation): 也称为数据隐藏.从形式上看,是将数据与行为组合起来,并对对象的使用者隐藏了数据的实现方式.封装给对象赋予了黑盒特征,提高重用性和可靠性. 继 ...
- [MyBatis] MyBatis理论入门
什么是MyBatis iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs) 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射. MyB ...
- FCC JS基础算法题(7):Chunky Monkey(分割数组)
题目描述: 把一个数组arr按照指定的数组大小size分割成若干个数组块. 例如:chunk([1,2,3,4],2)=[[1,2],[3,4]]; chunk([1,2,3,4,5],2)=[[1, ...
- JAVA_关键词01_instanceof的应用
A instanceof B: 对象A是否是 B类的一个实例 应用举例:
- PMP基本概念
项目是为创造独特的产品,服务或成果而进行的临时性的工作.项目的三个特点是:临时,独特,渐进明细. 运营是遵循组织有流程的重复性工作. 项目组合是为了实现战略目标而组合在一起管理的项目,项目集,子项目组 ...
- SQL注入之Sqli-labs系列第十七关(UPDATA– 基于错误– 单引号– 字符型)
开始挑战第十七关(Update Query- Error based - String) 首先介绍下update的用法: 作用:Update 语句用于修改表中的数据. 语法:UPDATE 表名称SET ...
- Django之模型层-了解ORM
ORM(对象-关系-映射)简单使用 ORM实现了数据模型与数据库的解耦合,即数据模型的设计不需要指定特定的数据库,通过python代码可以直接对数据库实现增删改查 MySQL语法 #sql中的表 #创 ...
- C#语法-虚方法详解 Virtual 虚函数
虚方法 / Virtual 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享. ...
- POJ - 1474 :Video Surveillance (半平面交-求核)
pro:顺时针给定多边形,问是否可以放一个监控,可以监控到所有地方,即问是否存在多边形的核. 此题如果两点在同一边界上(且没有被隔段),也可以相互看到. sol:求多边形是否有核.先给直线按角度排序, ...
- Python--函数对象@命名空间与作用域@包函数@装饰器@迭代器@内置函数
一.函数对象 函数(Function)作为程序语言中不可或缺的一部分,但函数作为第一类对象(First-Class Object)却是 Python 函数的一大特性. 那到底什么是第一类对象(Firs ...