在集群上创建并运行 Spark 应用程序
本教程涵盖了使用 Spark 的基本场景:我们将创建一个简单的应用程序,使用 Gradle 构建它,将其上传到一个 AWS EMR 集群,并在 Spark 和 Hadoop YARN 中监控作业。
我们将按照以下步骤进行:
使用 Spark 项目向导 从头开始创建一个新的 Spark 项目。 该向导允许您选择您的构建工具(SBT、Maven 或 Gradle)和 JDK,并确保您拥有所有必要的 Spark 依赖项。
将 Spark 应用程序提交到 AWS EMR。 我们将使用一个特殊的边栏图标,它会创建一个可用的运行配置。
安装 Spark 插件
此功能依赖 Spark 插件,您需要安装并启用。
按 Ctrl+Alt+S 打开设置,然后选择 。
打开 Marketplace 选项卡,找到 Spark插件,然后点击 安装 (如果出现提示,请重新启动IDE)。
创建 Spark 项目
在主菜单中,前往 。
在 新建项目 向导的左侧窗格中,选择 Spark。
请指定项目名称及其位置。
在 语言 列表中,选择 Scala。
类型 列表用于定义要生成的示例应用程序的类型。 由于我们正在创建自己的应用程序,您可以选择任何类型。
在 JDK 列表中,选择 JDK 8、11 或 17。
在 工件坐标 下,指定 group ID 和 version。

点击 创建。
这将创建一个新的 Spark 项目,该项目具有基本结构和 build.gradle 以及 Spark 依赖项。
创建 Spark 应用程序
在创建的项目中,右键点击 文件夹(或者按 Alt+Insert )并选择 。
在打开的 创建新的 Scala 类 窗口中,选择 对象 并输入名称,例如
SparkScalaApp。编写一些 Spark 代码。 如果您在应用程序
main方法中使用getOrCreate方法的SparkSession类,一个特殊图标将出现在行标区域,允许您快速创建运行 Spark Submit 配置。
例如:
import org.apache.spark.sql.{DataFrame, SparkSession} import org.apache.spark.sql.functions._ object SparkScalaApp { def main(args: Array[String]): Unit = { // Create a SparkSession val spark = SparkSession.builder() .appName("Simple Spark App") .getOrCreate() // Sample data val data = Seq( (1, "Alice", 25), (2, "Bob", 30), (3, "Charlie", 22) ) // Define the schema for the DataFrame val schema = List("id", "name", "age") // Create a DataFrame from the sample data and schema val df: DataFrame = spark.createDataFrame(data).toDF(schema: _*) // Perform a simple transformation (add 5 to the age column) val transformedDF = df.withColumn("age_plus_5", col("age") + 5) // Stop the SparkSession spark.stop() } }
设置 SSH 访问 AWS EMR 集群
Spark Submit 运行配置需要 SSH 访问 AWS EMR 集群,以在那里运行 spark-submit 命令。
如果您还没有 创建一个到 AWS EMR 的连接 ,请创建一个。
打开 AWS EMR 工具窗口: 。
选择一个集群,打开 信息 选项卡,然后点击 打开SSH 配置。
在打开的 SSH 配置 窗口中,检查认证参数并提供私钥文件路径。 要验证此配置,请点击 测试连接。
提交 Spark 作业到 AWS EMR
使用专用的 Spark Submit 运行配置,您可以立即构建您的 Spark 应用程序并将其提交到 AWS EMR 集群。 要将工件上传到 AWS EMR,您可以使用 Gradle tasks、IntelliJ IDEA 工件 或选择现有的 JAR 文件。 在本教程中,我们将使用 Gradle。
在装订区域,点击
旁边的
getOrCreate方法。
选择 创建 Spark Submit 配置。
请指定运行配置的以下参数:
在 远程目标 列表中,选择 AWS EMR 集群。 IntelliJ IDEA 建议在其上运行 Spark History 服务器的集群。
在 Application ,点击
并选择一个 Gradle artifact。
运行此配置时,IntelliJ IDEA 将构建该构件,然后将其上传至 AWS EMR。 您可以在 启动前 部分看到相应的 运行 Gradle 任务 和 通过 SFTP 上传文件 步骤。
点击 其他自定义 ,启用 Spark 配置 部分,并在 集群管理器 列表中,确保已选中 Hadoop YARN。
点击 运行。

这将打开 运行 工具窗口并显示 Gradle 任务。 一旦构建了构件,Spark Submit 任务会在 运行 工具窗口的一个新选项卡中打开。
有关此运行配置的更多信息,请参阅 Spark Submit 运行配置。
在 Spark 历史服务器中打开应用程序
如果您的应用程序成功上传到 AWS EMR,它将在 Spark History 服务器中可用。 您将在 运行 工具窗口中看到相应的通知。 您可以在浏览器或专用的 Spark 监控 工具窗口中打开它。
在 运行 工具窗口中,点击通知中打开的 打开监控。
或者,您可以在 跟踪 URL 的运行配置输出中点击 运行 工具窗口。

要了解有关 Spark 监控 工具窗口的更多信息,请参阅 Spark 监控。
从 Hadoop YARN 资源管理器打开 Spark 作业
如果您向 YARN 集群提交了 Spark application,它将作为 YARN application 运行,您可以在专用的 Hadoop YARN 工具窗口中监控(由 元存储核心 插件提供)。 在我们的教程中,当我们在 Spark Submit 运行配置中选择 Hadoop YARN 作为集群管理器时,我们就是这样做的。
打开 Hadoop YARN 工具窗口: 。 如果您有多个 Hadoop YARN 连接,请使用工具窗口顶部的选项卡选择所需的连接。
打开 应用程序 选项卡,并使用 ID 列找到您的应用程序。
点击 跟踪 url 列中的地址。
如果您未被重定向到 Spark 监控 工具窗口,将会出现有关连接缺失的通知。 点击 选择连接 选择现有的 Spark 连接,或 创建新连接。

此与 Spark 的集成是在 Hadoop YARN 连接设置中配置的。 要检查或更改它,请打开 Hadoop YARN 连接设置(通过点击 在 Hadoop YARN 工具窗口内或
在 Big Data Tools 工具窗口内)并在 Spark 监控 列表中选择 Spark 连接。
要了解有关 Hadoop YARN 工具窗口的更多信息,请参阅 Hadoop YARN。