如何使用 Spark-Submit 提交 运行 EMR 集群主节点上的 Scala 文件?

How to use Spark-Submit to run a scala file present on EMR cluster's master node?

所以,我使用 SSH 连接到我的 EMR 集群的主节点。这是主节点中存在的文件结构:

|-- AnalysisRunner.scala
|-- AutomatedConstraints.scala
|-- deequ-1.0.1.jar
|-- new
|   |-- Auto.scala
|   `-- Veri.scala
|-- VerificationConstraints.scala
`-- wget-log

现在,我先运行 spark-shell --conf spark.jars=deequ-1.0.1.jar

一旦进入 Scala 提示符,我将使用 :load new/Auto.scala 到 运行 我的 Scala 脚本。

我想做什么:

在我的 EMR 集群的主节点上,我想 运行 一个 spark-submit 命令来帮助我实现我之前所做的事情。

我是新手,谁能帮我下命令?

对于可能卡在这里的初学者:

你需要有一个 IDE(我用的是 IntelliJ IDEA)。要遵循的步骤:

  1. 创建一个 scala 项目 - 在 build.sbt 文件中放下所有需要的依赖项。
  2. 创建一个包(比如 'pkg')并在其下创建一个 Scala 对象(比如 'obj')。
  3. 在您的 Scala 对象中定义一个主要方法并编写您的逻辑。
  4. 处理项目以形成单个 .jar 文件。 (在项目目录中使用 IDE 工具或 运行 'sbt package')
  5. 使用以下命令提交
spark-submit --class pkg.obj 
--jars <path to your dependencies (if any)> 
<path to the jar created from your code> 
<command line arguments (if any)>

这对我有用。注意 - 如果您 运行 在 EMR 集群上执行此操作,请确保所有路径都基于

  1. 集群上存在文件系统
  2. S3 路径