(Spark)學習進度十四(Spark之Java獨立應用編程)


環境如下:(更新了林子雨教程中不可使用的部分)

Hadoop 2.6.0以上

java JDK 1.7以上

Spark 3.0.0-preview2

 

一、Scala獨立應用編程

二、java獨立應用編程(在下載依賴jar包的過程中如遇到卡頓現象可以Ctrl+C停止下載,然后重新執行本條命令即可繼續下載相應的依賴jar包)

1、安裝maven

ubuntu中沒有自帶安裝maven,需要手動安裝maven。可以訪問maven官方下載自己下載。這里直接給出apache-maven-3.6.3-bin.zip的下載地址,直接點擊下載即可。
選擇安裝在/usr/local/maven中:

sudo unzip ~/下載/apache-maven-3.6.3-bin.zip -d /usr/local

cd /usr/local
sudo mv apache-maven-3.6.3/ ./maven

sudo chown -R hadoop ./maven

 

2、Java應用程序代碼

在終端執行如下命令創建一個文件夾sparkapp2作為應用程序根目錄

cd ~ #進入用戶主文件夾
mkdir -p ./sparkapp2/src/main/java

 

在 ./sparkapp2/src/main/java 下建立一個名為 SimpleApp.java 的文件(vim ./sparkapp2/src/main/java/SimpleApp.java),添加代碼如下:

/*** SimpleApp.java ***/
import org.apache.spark.api.java.*;
import org.apache.spark.api.java.function.Function;

public class SimpleApp {
public static void main(String[] args) {
String logFile = "file:///usr/local/spark/README.md"; // Should be some file on your system
JavaSparkContext sc = new JavaSparkContext("local", "Simple App",
"file:///usr/local/spark/", new String[]{"target/simple-project-1.0.jar"});
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);
}
}

 

該程序依賴Spark Java API,因此我們需要通過Maven進行編譯打包。在./sparkapp2中新建文件pom.xml(vim ./sparkapp2/pom.xml),添加內容如下,聲明該獨立應用程序的信息以及與Spark的依賴關系:

<project>
    <groupId>edu.berkeley</groupId>
    <artifactId>simple-project</artifactId>
    <modelVersion>4.0.0</modelVersion>
    <name>Simple Project</name>
    <packaging>jar</packaging>
    <version>1.0</version>
    <repositories>
        <repository>
            <id>Akka repository</id>
            <url>http://repo.akka.io/releases</url>
        </repository>
    </repositories>
    <dependencies>
        <dependency> <!-- Spark dependency -->
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.12</artifactId>
            <version>3.0.0-preview2</version>
        </dependency>
    </dependencies>
  <!-- 如果不加下面這段可能會報錯 -->
  <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <artifactId>maven-resources-plugin</artifactId>
              <version>2.7</version>
            </plugin>           
          </plugins>
        </pluginManagement>   
    </build>
</project>

關於Spark dependency的依賴關系,可以訪問The Central Repository。搜索spark-core可以找到相關依賴關系信息。

 

 
        

 3、使用maven打包java程序

為了保證maven能夠正常運行,先執行如下命令檢查整個應用程序的文件結構:

cd ~/sparkapp2

find

 

 文件結構如下圖:

 接着,我們可以通過如下代碼將這整個應用程序打包成Jar(注意:電腦需要保持連接網絡的狀態,而且首次運行同樣下載依賴包,同樣消耗幾分鍾的時間(筆者耗時2個小時左右,下載時的實時網速只有十幾K,具體原因暫時不詳)):

 /usr/local/maven/bin/mvn package

 

如出現下圖,說明生成Jar包成功:

 4、通過spark-submit 運行程序

最后,可以通過將生成的jar包通過spark-submit提交到Spark中運行,如下命令:

/usr/local/spark/bin/spark-submit --class "SimpleApp" ~/sparkapp2/target/simple-project-1.0.jar 2>&1 | grep "Lines with a"

 

最后得到的結果如下:

 

 

 

 

 

 

 

 

本博客參考了林子雨的大數據原理與應用 第十六章 Spark 學習指南 http://dblab.xmu.edu.cn/blog/804-2/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM