您可以自行编写并构建包含业务逻辑的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开发快速入门。