您可以自行編寫並構建包含商務邏輯的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包
進入資源上傳頁面。
在左側導覽列,選擇。
在Spark頁面,單擊目標工作空間名稱。
在EMR Serverless Spark頁面,單擊左側導覽列中的檔案管理。
在檔案管理頁面,單擊上傳檔案。
在上傳檔案對話方塊中,單擊待上傳檔案地區選取項目本地JAR包,或者直接拖拽JAR包到待上傳檔案地區。
本文樣本是上傳SparkExample-1.0-SNAPSHOT.jar。
步驟三:開發並運行任務
在EMR Serverless Spark頁面,單擊左側的資料開發。
在開發目錄頁簽下,單擊
表徵圖。輸入名稱,類型選擇,然後單擊確定。
在右上方選擇隊列。
添加隊列的具體操作,請參見管理資源隊列。
在建立的任務開發中,配置以下資訊,其餘參數無需配置,然後單擊運行。
參數
說明
主jar資源
選擇前一個步驟中上傳的JAR包。本文樣本是SparkExample-1.0-SNAPSHOT.jar。
Main Class
提交Spark任務時所指定的主類。
計算圓周率π近似值:樣本填寫為
org.example.JavaSparkPi。查詢Hive表:樣本填寫為
org.example.HiveTableAccess。
運行任務後,在下方的運行記錄地區,單擊任務操作列的日誌探查,您可以查看相關的日誌資訊。


步驟四:發布任務
發行的任務可以作為工作流程節點的任務。
任務運行完成後,單擊右側的發布。
在彈出的對話方塊中,可以輸入發布資訊,然後單擊確定。
(可選)步驟五:查看Spark UI
任務正常運行後,您可以在Spark UI上查看任務的運行情況。
在左側導覽列,單擊任務歷史。
在Application頁面,單擊目標任務操作列的Spark UI。
在Spark Jobs頁面,您可以查看任務詳情。

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