使用 Spark 提交顺序执行包中的所有对象
Executing All Objects in A Package Sequentially With Spark Submit
我正在寻找一种使用 spark submit 顺序执行包中所有 scala 对象的方法。从事 ETL 工作。我有 4 个 Scala 对象(比方说 Object_1、Object_2、Object_3 和 Object_4) 都在一个包中,比方说 etl。然后将此包导出到 .jar 文件(比如 all_four.jar)
- 提取 - Object_1 和 Object_2
- 转换 - Object_3
- 加载 - Object_4
我知道我可以使用以下 spark 提交命令执行每个对象
./spark-submit --class etl.x --jars path/to/jar/if/any.jar path/to/exported/jar/all_four.jar arg(0)......arg(n)
其中 x 代表包中的每个 Scala 对象。
但是,我正在寻找一种只调用包一次并且所有对象将按以下顺序执行的方法:
- 第 1 步 - Object_1 和 Object_2(提取)可以同时执行或可能同时执行。他们只需要都完成
- 第 2 步 - Object_3(转换)已执行
- 第 3 步 - Object_4(加载)已执行
有没有办法用 Spark Submit 做到这一点?还是有更好、更有效的方法来实现这一目标?
一种方法是编写包含第 1 步、第 2 步和第 3 步逻辑的包装器对象 (Execute
) 以按顺序调用所有逻辑。如果您可以访问源代码,则可以将此包装器对象与这四个对象一起包含。
请找到如下所示的示例包装器 & 您可能需要根据需要进行修改。
import etl.{Object_1,Object_2,Object_3,Object_4}
object Execute {
def extract() = {
// Make use of Object_1 & Object_2 logic here.
}
def transform() {
// Make use of Object_3 logic here.
}
def load() {
// Make use of Object_4 logic here.
}
def main(args: Array[String])
{
extract()
transform()
load()
}
}
./spark-submit \
--class Execute \
--jars path/to/jar/if/any.jar path/to/exported/jar/all_four.jar arg(0)......arg(n)
我正在寻找一种使用 spark submit 顺序执行包中所有 scala 对象的方法。从事 ETL 工作。我有 4 个 Scala 对象(比方说 Object_1、Object_2、Object_3 和 Object_4) 都在一个包中,比方说 etl。然后将此包导出到 .jar 文件(比如 all_four.jar)
- 提取 - Object_1 和 Object_2
- 转换 - Object_3
- 加载 - Object_4
我知道我可以使用以下 spark 提交命令执行每个对象
./spark-submit --class etl.x --jars path/to/jar/if/any.jar path/to/exported/jar/all_four.jar arg(0)......arg(n)
其中 x 代表包中的每个 Scala 对象。
但是,我正在寻找一种只调用包一次并且所有对象将按以下顺序执行的方法:
- 第 1 步 - Object_1 和 Object_2(提取)可以同时执行或可能同时执行。他们只需要都完成
- 第 2 步 - Object_3(转换)已执行
- 第 3 步 - Object_4(加载)已执行
有没有办法用 Spark Submit 做到这一点?还是有更好、更有效的方法来实现这一目标?
一种方法是编写包含第 1 步、第 2 步和第 3 步逻辑的包装器对象 (Execute
) 以按顺序调用所有逻辑。如果您可以访问源代码,则可以将此包装器对象与这四个对象一起包含。
请找到如下所示的示例包装器 & 您可能需要根据需要进行修改。
import etl.{Object_1,Object_2,Object_3,Object_4}
object Execute {
def extract() = {
// Make use of Object_1 & Object_2 logic here.
}
def transform() {
// Make use of Object_3 logic here.
}
def load() {
// Make use of Object_4 logic here.
}
def main(args: Array[String])
{
extract()
transform()
load()
}
}
./spark-submit \
--class Execute \
--jars path/to/jar/if/any.jar path/to/exported/jar/all_four.jar arg(0)......arg(n)