天天看點

《Spark大資料分析實戰》——2.1節Spark應用開發環境配置

本節書摘來自華章社群《spark大資料分析實戰》一書中的第2章,第2.1節spark應用開發環境配置,作者高彥傑 倪亞宇,更多章節内容可以通路雲栖社群“華章社群”公衆号檢視

2.1 spark應用開發環境配置

spark的開發可以通過intellij或者eclipse ide進行,在環境配置的開始階段,還需要安裝相應的scala插件。

2.1.1 使用intellij開發spark程式

本節介紹如何使用intellij idea建構spark開發環境和源碼閱讀環境。由于intellij對scala的支援更好,目前spark開發團隊主要使用intellij作為開發環境。

1.?配置開發環境

(1)安裝jdk

下載下傳後,如果在windows下直接運作安裝程式,會自動配置環境變量,安裝成功後,在cmd的指令行下輸入java,有java版本的日志資訊提示則證明安裝成功。

如果在linux下安裝,下載下傳jdk包解壓縮後,還需要配置環境變量。

在/etc/prof?ile檔案中,配置環境變量:

(2)安裝scala

spark核心采用scala進行開發,上層通過封裝接口提供java和python的api,在進行開發前需要配置好scala的開發包。

(3)安裝intellij idea

目前intellij最新的版本中已經可以支援建立sbt工程,安裝scala插件,可以很好地支援scala開發。

(4)intellij中安裝scala插件

在intellij菜單中選擇“conf?igure”,在下拉菜單中選擇“plugins”,再選擇“browse repositories”,輸入“scala”搜尋插件(如圖2-1所示),在彈出的對話框中單擊“install”按鈕,重新開機intellij。

2.?配置spark應用開發環境

1)使用者在intellij idea中建立scala project, sparktest。

2)選擇菜單中的“file”→“project structure”→“libraries”指令,單擊“+”,導入“spark-assembly_2.10-1.0.0-incubating-hadoop2.2.0.jar”。

隻需導入該jar包,該包可以通過在spark的源碼工程下執行“sbt/sbt assembly”指令生成,這個指令相當于将spark的所有依賴包和spark源碼打包為一個整體。

在“assembly/target/scala-2.10.4/”目錄下生成:spark-assembly-1.0.0-incubating-hadoop2.2.0.jar。

3)如果ide無法識别scala庫,則需要以同樣方式将scala庫的jar包導入。之後就可以開始開發spark程式。如圖2-2所示,本例将spark預設的示例程式sparkpi複制到檔案。

《Spark大資料分析實戰》——2.1節Spark應用開發環境配置

3.?運作spark程式

(1)本地運作

編寫完scala程式後,可以直接在intellij中,以本地local模式運作(如圖2-3所示),方法如下。

《Spark大資料分析實戰》——2.1節Spark應用開發環境配置

在intellij中的選擇“run”→“debug conf?iguration”→“edit conf?igurations”指令。在“program arguments”文本框中輸入main函數的輸入參數local。然後右鍵選擇需要運作的類,單擊“run”按鈕運作。

(2)叢集上運作spark應用jar包

如果想把程式打成jar包,通過指令行的形式運作在spark叢集中,并按照以下步驟操作。

1)選擇“file”→“project structure”,在彈出的對話框中選擇“artifact”→

“jar”→“from modules with dependencies”指令。

2)在選擇“from modules with dependencies”之後彈出的對話框中,選擇main函數,同時選擇輸出jar位置,最後單擊“ok”按鈕。

具體如圖2-4~圖2-6所示。

在圖2-5中選擇需要執行的main函數。

在圖2-6界面選擇依賴的jar包。

《Spark大資料分析實戰》——2.1節Spark應用開發環境配置
《Spark大資料分析實戰》——2.1節Spark應用開發環境配置

在主菜單選擇“build”→“build artifact”指令,編譯生成jar包。

3)将生成的jar包sparktest.?jar在叢集的主節點,通過下面指令執行:

java -jar sparktest.jar

使用者可以通過上面的流程和方式通過intellij作為內建開發環境進行spark程式的開發。

2.1.2 使用sparkshell進行互動式資料分析

如果是運作spark shell,那麼會預設建立一個sparkcontext,命名為sc,是以不需要在spark shell建立新的sparkcontext,sparkcontext是應用程式的上下文,排程整個應用并維護中繼資料資訊。在運作spark shell之前,可以設定參數master,将spark應用送出到master指向的相應叢集或者本地模式執行,叢集方式運作的作業将會分布式地運作,本地模式執行的作業将會通過單機多線程方式運作。可以通過參數add_jars把jars添加到classpath,使用者可以通過這種方式添加所需的第三方依賴庫。

如果想spakr-shell在本地4核的cpu運作,需要如下方式啟動:

按鍵,即可運作程式。

通過以上介紹,使用者可以了解如何使用spark shell進行互動式資料分析。

對于邏輯較為複雜或者運作時間較長的應用程式,使用者可以通過本地intellij等ide作為內建開發環境進行應用開發與打包,最終送出到叢集執行。對于執行時間較短的互動式分析作業,使用者可以通過spark shell進行相應的資料分析。