• 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外面调用,问题解决。

  • 相关阅读:
    bcftools 为 vcf 文件建索引及合并 vcf 文件
    Linux 替换^M字符方法
    shell 字符串分割方法简介
    shell 数组介绍及相关操作
    Annovar 信息注释
    C++ string与数值的转换
    C/C++ 删除文件 remove函数
    关于内核转储(core dump)的设置方法
    mac下nginx安装
    linux独有的sendfile系统调用--“零拷贝,高效”
  • 原文地址:https://www.cnblogs.com/xiashiwendao/p/10165452.html
Copyright © 2020-2023  润新知