spark 初学scala中的main方法及其参数

一:类和对象
1. scala不用class作为类的关键字,而是使用object, object是scala中的静态类,不是对象;

2.object作为scala中的一个关键字,相当于java中的public static class这样一个修饰符,意思是object中成员是静态的
 所以例子中的main方法是静态的,不需要实例就可以直接被虚拟机调用,也是JVM平台的程序入口必备条件;

3.“scala”和“java”都会编译为class字节码文件,因此可以互相调用
 
 二:参数解释
  1.  def是scala中的关键字,所有用def修饰的都是函数或者方法
  2. main是方法,因为被def定义且不具有函数特征
  3. main是规定的scala应用程序入口,且一个scala应用程序只能有一个入口
  4. args: Array[String] 其中args参数名称,Array[String]程序运行时的参数集合
  5. Unit 表明main方法的返回参数类型是Unit ,相当于java中的void
  6. 方法体一般用{}封装,Unit={}方法返回类型是Unit
  7. println方法返回类型是Unit
  8.println调用了java的IO流,意思是scala的实现调用了java底层来缩短开发时间,例如:操作数据源(DB,NoSql,HBase等),线程Thread,IO等

  三:举例
  def main(args: Array[String]): Unit = {
    println("this is scala test!")//在控制台打印字符串并换行
    println(args.length)//
  }
}

四:注意

以前可能会使用继承scala.APP来作为主程序启动的入口,但可能会报错空指针异常,所以spark官方要求利用main函数作为主函数入口。

这是由于继承App后,里面所有变量都被认为是单个类的field了,并不会被初始化,无法被Spark访问到;而如果是以main函数初始化,所有变量都是被当作局部变量,这样一来,Spark程序封装闭包后便可以访问到该变量。

object Test extends App {
  //ToDo
}

 

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值