1. 程式人生 > >spark (java API) 在Intellij IDEA中開發並執行

spark (java API) 在Intellij IDEA中開發並執行

概述:Spark 程式開發,除錯和執行,intellij idea開發Spark java程式。
分兩部分,第一部分基於intellij idea開發Spark例項程式並在intellij IDEA中執行Spark程式.第二部分,將開發程式提交到Spark local或者hadoop YARN叢集執行。Github專案原始碼

圖1,直接在intellij IDEA(社群版)中開發除錯,直接run。

spark hadoop intellij idea java 程式開發

圖2,直接在intellij IDEA(社群版)中用hadoop YARN模式。

這裡寫圖片描述

1.(第一部分)使用intellij IDEA建立一個Java的Maven專案。Github專案原始碼

初始化的MAVEN專案如下

這裡寫圖片描述

2.1.建立SimpleApp.java檔案 SimpleApp.java

/**
 * MIT.
 * Author: wangxiaolei(王小雷).
 * Date:17-2-7.
 * Project:SparkJavaIdea.
 */
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 = "file:///opt/spark-2.1.0-bin-hadoop2.7/README.md"; // 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); sc.stop(); } }

2.2.修改pom.xml檔案 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>wangxiaolei</groupId>
    <artifactId>SparkJavaIdea</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency> <!-- Spark dependency -->
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.11</artifactId>
            <version>2.1.0</version>
        </dependency>
    </dependencies>

</project>

3.在intellij IDEA中執行Spark程式

3.1 設定IDEA執行項的Configuration中的VM opthion 增加-Dspark.master=local

這裡寫圖片描述

3.2.右鍵SimpleApp.java 點選執行,稍等片刻看到執行成功。

已經將Readme.md中的單詞a和b統計出來了Lines with a: 62, lines with b: 30

這裡寫圖片描述

至此,Spark在intellij IDEA中開發,並在IDEA中執行成功!

4.(第二部分)將intellij IDEA中的Spark java程式打包成jarGithub專案原始碼

這裡寫圖片描述

5.spark local模式執行

5.1.使用intellij IDEA的Terminal或者是系統(博主是Ubuntu)的Terminal,在當前專案路徑(/home/xiaolei/Data/GS/Spark/SparkJavaIdea)執行如下程式碼。

/opt/spark-2.1.0-bin-hadoop2.7/bin/spark-submit \
  --class "SimpleApp" \
  --master local[4] \
  target/SparkJavaIdea-1.0-SNAPSHOT.jar

這裡寫圖片描述

這裡寫圖片描述

至此,Spark local模式程式開發和執行成功!

6.YARN叢集模式(或偽分散式)執行.——需要有叢集環境或者提前配置好了偽分散式環境,偽分散式環境搭建參考另一篇博文Ubuntu16.04安裝Hadoop2.6+Spark1.6+開發例項

6.1.開啟hadoop叢集,開啟Spark。

# 初次搭建叢集需要格式化namenode(已經初始化過可省略)
/opt/hadoop-2.7.3/bin/hdfs namenode -format
#開啟hadoop叢集(偽分散式)
/opt/hadoop-2.7.3/sbin/start-all.sh
#開啟Spark
/opt/spark-2.1.0-bin-hadoop2.7/sbin/start-all.sh
#檢視開啟狀態
jps

這裡寫圖片描述

6.2 使用intellij IDEA的Terminal或者是系統(博主是Ubuntu)的Terminal,在當前專案路徑(/home/xiaolei/Data/GS/Spark/SparkJavaIdea)執行如下程式碼。

/opt/spark-2.1.0-bin-hadoop2.7/bin/spark-submit   --class SimpleApp   --master yarn --deploy-mode cluster   target/SparkJavaIdea-1.0-SNAPSHOT.jar

這裡寫圖片描述

至此,Spark在intellij IDEA中開發,並在hadoop YARN模式下執行成功!

http://localhost:8088/cluster/apps

這裡寫圖片描述

至此,Spark在intellij IDEA中開發,並在hadoop YARN模式下執行成功!