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

Bob*_*eld 0 scala apache-spark

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

import org.apache.spark._
import org.apache.spark.SparkContext._
Run Code Online (Sandbox Code Playgroud)

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

Ray*_*oal 6

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

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

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

这可能有所帮助:

没有第一行,你不得不说

org.apache.spark.SparkContext
Run Code Online (Sandbox Code Playgroud)

但第一条进口线让你说

SparkContext
Run Code Online (Sandbox Code Playgroud)

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

SparkContext.getOrCreate
Run Code Online (Sandbox Code Playgroud)

但是使用两条导入线你都可以写

getOrCreate
Run Code Online (Sandbox Code Playgroud)