IDEA的auto import 与 Scala的隐式转换

来源:互联网 发布:百度音乐api接口 java 编辑:程序博客网 时间:2024/06/06 06:37

设置IDEA的auto import 之后,编写Spark应用程序时的一些自动导入情况及其说明。

1.普通类的自动导入

var cnames = new ArrayBuffer[String]()var ips = new ArrayBuffer[String]()
直接根据提示alt+enter便可以导入ArrayBuffer类包

2.需要隐式转换
val joinRDD = reqRDD.join(respRDD).map(x => (x._2._1, x._2._2)).reduceByKey((x, y) => x)

joinRDD.collect.foreach(println)

此时需要导入语句


import org.apache.spark.SparkContext._


需要手动导入,个人理解:在这里reduceByKey方法在idea中并不能判断出其属于哪个类,所以idea便不能给出提示需要导入哪个类。

需要先将隐式转换放入作用域,才会对类型进行转换。


在spark1.1.0版本中,隐式类型转换的函数定义在SparkContext里面;隐式类型转换如果定义在自己的类中,作用于就是自己,如果定义在其他类里,需要把这个类引入,否则不会自动转换。

而在spark1.3.0中,隐式类型转换的函数被定义在了RDD里面,所以在同样在写程序时,spark1.1.0时可能不会有提示,所以需要手动导入import org.apache.spark.SparkContext._。而依赖spark1.3.0时,就会有提示,不用手动导入RDD类了。


0 0