我为什么要导入这么多课程?

时间:2017-07-19 08:01:13

标签: scala apache-spark

我正在查看示例Spark代码,我对为什么我要查看的示例代码需要两个import语句感到困惑:

import org.apache.spark._
import org.apache.spark.SparkContext._

这是Scala。据我了解,_是通配符。所以这看起来像是我两次导入SparkContext。任何人都可以对此有所了解吗?

1 个答案:

答案 0 :(得分:6)

第一行表示导入包org.apache.spark中的所有类。这意味着您可以使用所有这些类,而无需使用包名称作为前缀。

第二行表示导入类SparkContext的所有静态成员。这意味着您可以使用这些成员,而无需在名称前加上类名称。

请记住import在运行时并没有做任何事情;它只是让你编写更少的代码。你实际上并没有"导入"任何两次。术语import的使用来自Java,并且无可否认它令人困惑。

这可能会有所帮助:

如果没有第一行,你必须说

org.apache.spark.SparkContext

但第一个导入行允许你说

SparkContext

如果你只有第一行而不是第二行,你必须写

SparkContext.getOrCreate

但是使用两个导入行你都可以写

getOrCreate