spark (java API) 在Intellij IDEA中開發並執行
阿新 • • 發佈:2019-01-22
概述:Spark 程式開發,除錯和執行,intellij idea開發Spark java程式。
分兩部分,第一部分基於intellij idea開發Spark例項程式並在intellij IDEA中執行Spark程式.第二部分,將開發程式提交到Spark local或者hadoop YARN叢集執行。Github專案原始碼
圖1,直接在intellij IDEA(社群版)中開發除錯,直接run。
圖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模式下執行成功!