2015年9月30日 星期三

使用Scale IDE with Eclipse 開發第一個Spark JAVA程式

隨著前一篇練習我們可以利用 Maven 直接建立出一個簡單的呼叫Spark API的範例程式
但是往往不容易知道萬一程式內容有誤怎辦?(直接在Eclipse用Maven不在此限)
這邊簡單介紹使用Scale IDE 整合了 Eclipse 來建立第一支JAVA範例程式

首先至 Scale IDE Download 下載最新的 Scala IDE,之後解壓縮後會出現Eclipse的目錄
點擊2下後,建立一個新的專案(Java Project)名為SparkTestApp後,如圖
接著我們在 eclipse complier時需要使用到 spark-assembly-1.5.0.hadoop2.6.0.jar
該檔案是會在您安裝Spark的 /lib路徑下(隨著安裝版本的不同檔名也不同)

由於我之前 Spark 環境 跟 Windows Eclipse環境是分開安裝的,所以一樣利用WinSCP工具將在Linux環境下的 spark-assembly-1.5.0.hadoop2.6.0.jar 複製至 Windows環境

複製完畢後在剛才建立的Project 專案名稱按右鍵-->properties-->Java Bulid Path-->add External jars-->選擇你剛才複製的jar檔

 現在我們可以建立 java class 了
在src按右鍵建立 class 取名為 SimpleApp.java
程式碼如下:
/* SimpleApp.java */
import org.apache.spark.api.java.*;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.function.Function;

public class SimpleApp {
  public static void main(String[] args) {
    String logFile = "/opt/SparkLogFile.log"; // Should be some file on your system
    SparkConf conf = new SparkConf().setAppName("Simple Application");
    JavaSparkContext sc = new JavaSparkContext(conf);
    JavaRDD<String> logData = sc.textFile(logFile).cache();

    long numAs = logData.filter(new Function<String, Boolean>() {
      public Boolean call(String s) { return s.contains("a"); }
    }).count();

    long numBs = logData.filter(new Function<String, Boolean>() {
      public Boolean call(String s) { return s.contains("b"); }
    }).count();

    System.out.println("Lines with a: " + numAs + ", lines with b: " + numBs + " version 2.0");
  }
}

程式碼與之前相同,接著我們在專案名稱按右鍵-->Export 
選擇 Export JAR file
取名 SimpleAppV2
按下 Finish 後 ,至你建立專案的 WorkSpace下取得 SimpleAppV2.jar
同上一個範例將其檔案複製至 Spark Linux 環境下
執行命令 
#spark-submit --class "SimpleApp" SimpleAppV2.jar
執行結果如下:


恭喜剛才在Eclipse建立的範例程式也可成功運行嘍!






沒有留言:

張貼留言