如何使用 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)。要遵循的步骤:
- 创建一个 scala 项目 - 在 build.sbt 文件中放下所有需要的依赖项。
- 创建一个包(比如 'pkg')并在其下创建一个 Scala 对象(比如 'obj')。
- 在您的 Scala 对象中定义一个主要方法并编写您的逻辑。
- 处理项目以形成单个 .jar 文件。 (在项目目录中使用 IDE 工具或 运行 'sbt package')
- 使用以下命令提交
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 集群上执行此操作,请确保所有路径都基于
- 集群上存在文件系统
- S3 路径
所以,我使用 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)。要遵循的步骤:
- 创建一个 scala 项目 - 在 build.sbt 文件中放下所有需要的依赖项。
- 创建一个包(比如 'pkg')并在其下创建一个 Scala 对象(比如 'obj')。
- 在您的 Scala 对象中定义一个主要方法并编写您的逻辑。
- 处理项目以形成单个 .jar 文件。 (在项目目录中使用 IDE 工具或 运行 'sbt package')
- 使用以下命令提交
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 集群上执行此操作,请确保所有路径都基于
- 集群上存在文件系统
- S3 路径