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 .... 在老 ...
随机推荐
- L320 What late-night snacking has to do with sleep
What late-night snacking has to do with sleep Light-night snacking isn’t just something college stud ...
- office web apps server安装部署
操作系统:windows 2012 软件下载地址: 链接:https://pan.baidu.com/s/1c3WWFs8 密码:4dcy NDP452-KB2901954-Web.exe(.Net ...
- base64encode 编码原理
Base64编码,是我们程序开发中经常使用到的编码方法.它是一种基于用64个可打印字符来表示二进制数据的表示方法.它通常用作存储.传输一些二进制数据编码方法!也是MIME(多用途互联网邮件扩展,主要用 ...
- ubantu 安装mysql 5.7 解决安装不提示设置密码问题
1.安装Mysql sudo apt-get install mysql-server sudo apt-get install mysql-client sudo apt-get install l ...
- python点滴:读取和整合文件夹下的所有文件
当我们想读取一个文件夹下的多个文件,并且将所有文件的内容整合成一个文件,应该怎么做? 基本的思路是:写一个专门的函数实现以上两个功能.主要用到的命令包括os.listdir().codecs.open ...
- 2--JAVA+Maven+TestNG搭建接口测试框架搭建
1.配置JDK 2.安装Eclipse以及TestNG Eclipse下载地址:http://beust.com/eclipse TestNG安装过程:输入网址:http://beust.com/ec ...
- 存在重复元素(python3)
存在重复元素(描述一): 给定一个整数数组,判断是否存在重复元素.如果任何值在数组中出现至少两次,函数返回 true:如果数组中每个元素都不相同,则返回 false. 示例 1: 输入: [1,2,3 ...
- Proxy --概述篇
概述: Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程. Proxy 可以理解成,在目标对象之前架设 ...
- mysql_connect和mysql_pconnect区别
php中mysql_pconnect()的实现方式:其实mysql_pconnect()本身并没有做太多的处理,它唯一做的只是在php运行结束后不主动close掉mysql的连接.mysql_pcon ...
- Django中的session于cookie的用法
1.cookies 1.django 中使用 cookies 1.设置cookies的值(将数据保存到客户端) 语法: 响应对象.set_cookie(key,value,expires) key:c ...