spark導入在idea中運行

本文主要介紹在window平臺上,spark官方代碼例子直接在idea中運行和測試。
一、saprk官網(http://spark.apache.org/downloads.html)下載spark 2.3.2,並解壓在D:\project\idea_spark\spark-2.3.2目錄html

二、執行maven命令下載相關依賴包
設置環境變量path的git命令目錄java

否則執行後邊maven命令時,可能會報下邊錯誤:
Execute failed: java.io.IOException: Cannot run program "bash"git

設好環境變量後
命令行在D:\project\idea_spark\spark-2.3.2目錄中運行命令github

mvn idea:idea

這個命令主要是爲了下載spar源碼依賴的相關jar包和插件,若是直接使用idea導入spark源碼,有可能會由於下載jar包(網速過慢)致使加載源碼失敗而運行不成功。
這個過程網速好的話,可能10來分鐘執行完成,也可能執行大半天才完成。sql

三、idea導入,菜單File->New->Project from Existing Source..,選中D:\project\idea_spark\spark-2.3.2目錄導入,Import Project中選中maven導入apache

按上圖選擇框選擇,而後其它窗口一路Next。windows

四、導入完成後,菜單File->Project Structure,設置spark-expamples_2.11項目的maven依賴包的scope值由provided改成Compileapi

五、Build->Rebuild Project從新建項目,
若是不rebuild,可能會出現下邊報錯
Exception in thread "main" java.lang.Exception: Could not find resource path for Web UI: org/apache/spark/ui/staticbash

六、spark運行是依賴於hadoop的,所以須要添加hadopp程序。若是不添加,會報下邊錯誤
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.app

下載https://hadoop.apache.org/releases.html,下載hadoop Binary 2.7.6版本,解壓在D:\hadoop\hadoop-2.7.6
訪問https://github.com/steveloughran/winutils,這個庫提供hadoop在windows上運行的相關文件,把hadoop-2.7.1/bin/(選擇與本地hadoop對應的winutils版本)目錄下的相關文件都放進D:\hadoop\hadoop-2.7.6\bin
七、運行代碼
以spark-2.3.2\examples\src\main\java\org\apache\spark\examples\JavaSparkPi.java爲例子代碼,

package org.apache.spark.examples;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.sql.SparkSession;
import java.util.ArrayList;
import java.util.List;

public final class JavaSparkPi {

  public static void main(String[] args) throws Exception {
    System.setProperty("hadoop.home.dir", "D:/hadoop/hadoop-2.7.6"); // 修改:增長hadoop
    System.setProperty("HADOOP_USER_NAME", "root");                  // 修改:增長用戶
    SparkSession spark = SparkSession
      .builder()
      .appName("JavaSparkPi")
      // 修改:添加master("local[*]")爲本地運行模式,必須設置爲 local才能在idea本地上運行
      .master("local[*]")   
      .getOrCreate();

    JavaSparkContext jsc = new JavaSparkContext(spark.sparkContext());

    int slices = (args.length == 1) ? Integer.parseInt(args[0]) : 2;
    int n = 100000 * slices;
    List<Integer> l = new ArrayList<>(n);
    for (int i = 0; i < n; i++) {
      l.add(i);
    }

    JavaRDD<Integer> dataSet = jsc.parallelize(l, slices);

    int count = dataSet.map(integer -> {
      double x = Math.random() * 2 - 1;
      double y = Math.random() * 2 - 1;
      return (x * x + y * y <= 1) ? 1 : 0;
    }).reduce((integer, integer2) -> integer + integer2);

    System.out.println("Pi is roughly " + 4.0 * count / n);

    spark.stop();
  }
}

完成上邊設置,能夠idea中直接鼠標右鍵運行,運行結果以下

相關文章
相關標籤/搜索