全部產品
Search
文件中心

E-MapReduce:JAR開發快速入門

更新時間:Aug 06, 2025

您可以自行編寫並構建包含商務邏輯的JAR包,上傳此業務JAR包後,即可便捷地開發Spark JAR。本文通過兩個樣本,為您示範如何進行JAR任務的開發與部署。

前提條件

  • 已建立工作空間,詳情請參見管理工作空間

  • 已提前完成商務應用程式開發,並構建好JAR包。

操作步驟

步驟一:開發JAR包

在EMR Serverless Spark中,不直接提供整合的JAR包開發環境,因此需要您在本地或獨立的開發平台上完成Spark應用的編碼和打包成JAR檔案。本文提供兩個樣本供您參考。

在Maven專案的pom.xml檔案中,需添加與Spark相關的依賴項。鑒於 Serverless Spark 運行環境已內建這些依賴,將 scope 設定為 provided 可避免重複打包和版本衝突,同時仍保留編譯和測試階段的可用性。

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_2.12</artifactId>
    <version>3.5.2</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-sql_2.12</artifactId>
    <version>3.5.2</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-hive_2.12</artifactId>
    <version>3.5.2</version>
    <scope>provided</scope>
</dependency>

查詢DLF表

public class HiveTableAccess {
    public static void main(String[] args) {
        SparkSession spark = SparkSession.builder()
                .appName("DlfTableAccessExample")
                .enableHiveSupport()
                .getOrCreate();
        spark.sql("SELECT * FROM test_table").show();
        spark.stop();
    }
}

計算圓周率π近似值

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;

/**
 * Computes an approximation to pi
 * Usage: JavaSparkPi [partitions]
 */
public final class JavaSparkPi {

  public static void main(String[] args) throws Exception {
    SparkSession spark = SparkSession
      .builder()
      .appName("JavaSparkPi")
      .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();
  }
}

單擊SparkExample-1.0-SNAPSHOT.jar,直接下載測試JAR包。

步驟二:上傳JAR包

  1. 進入資源上傳頁面。

    1. 登入E-MapReduce控制台

    2. 在左側導覽列,選擇EMR Serverless > Spark

    3. Spark頁面,單擊目標工作空間名稱。

    4. 在EMR Serverless Spark頁面,單擊左側導覽列中的檔案管理

  2. 檔案管理頁面,單擊上傳檔案

  3. 上傳檔案對話方塊中,單擊待上傳檔案地區選取項目本地JAR包,或者直接拖拽JAR包到待上傳檔案地區。

    本文樣本是上傳SparkExample-1.0-SNAPSHOT.jar。

步驟三:開發並運行任務

  1. 在EMR Serverless Spark頁面,單擊左側的資料開發

  2. 開發目錄頁簽下,單擊image表徵圖。

  3. 輸入名稱,類型選擇批任務 > JAR,然後單擊確定

  4. 在右上方選擇隊列。

    添加隊列的具體操作,請參見管理資源隊列

  5. 在建立的任務開發中,配置以下資訊,其餘參數無需配置,然後單擊運行

    參數

    說明

    主jar資源

    選擇前一個步驟中上傳的JAR包。本文樣本是SparkExample-1.0-SNAPSHOT.jar。

    Main Class

    提交Spark任務時所指定的主類。

    • 計算圓周率π近似值:樣本填寫為org.example.JavaSparkPi

    • 查詢Hive表:樣本填寫為org.example.HiveTableAccess

  6. 運行任務後,在下方的運行記錄地區,單擊任務操作列的日誌探查,您可以查看相關的日誌資訊。

    image

    image

步驟四:發布任務

重要

發行的任務可以作為工作流程節點的任務。

  1. 任務運行完成後,單擊右側的發布

  2. 在彈出的對話方塊中,可以輸入發布資訊,然後單擊確定

(可選)步驟五:查看Spark UI

任務正常運行後,您可以在Spark UI上查看任務的運行情況。

  1. 在左側導覽列,單擊任務歷史

  2. Application頁面,單擊目標任務操作列的Spark UI

  3. 在Spark Jobs頁面,您可以查看任務詳情。

    image

相關文檔

任務發布完成後,您可以在工作流程調度中使用,詳情請參見管理工作流程。任務編排完整的開發流程樣本,請參見SparkSQL開發快速入門