2017-07-19 46 views
0

我期待在例如星火代碼和我有點困惑,爲什麼我在看的示例代碼需要兩個import語句:我爲什麼要導入這麼多類?

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

這是斯卡拉。據我瞭解,_是通配符。所以這看起來像我兩次導入SparkContext。任何人都可以闡明這一點嗎?

+0

由於星火2.2出來了,我強烈建議,除非你有一個理由不留在包離開。使用Spark SQL(在其他好東西中有'SparkSession')。 –

+0

學習考試。你知道它是怎麼回事。 –

+1

這可以縮短爲'import org.apache.spark._,SparkContext._' –

回答

6

第一行說要導入包org.apache.spark中的所有類。這意味着您可以使用所有這些類,而無需在包名前加前綴。

第二行說要導入類SparkContext的所有靜態成員。這意味着您可以使用這些成員,而不必在名稱前加上類名稱。

請記住import在運行時沒有做任何事情;它只是讓你寫更少的代碼。你實際上並沒有兩次「進口」任何東西。術語import的使用來自Java,並且毫無疑問是令人困惑的。

這可能幫助:

沒有第一線,你不得不說

org.apache.spark.SparkContext 

,但第一個導入線可以讓你說

SparkContext 

如果只有第一線和不是第二,你將不得不寫

SparkContext.getOrCreate 

但兼具進口線,你可以只寫

getOrCreate 
+0

非常好!謝謝! –

相關問題