Apache spark 如何向spark提交一份申请中的多份工作
我有一个使用spark 2.1(scala)的report stats项目,其工作原理如下:Apache spark 如何向spark提交一份申请中的多份工作,apache-spark,Apache Spark,我有一个使用spark 2.1(scala)的report stats项目,其工作原理如下: object PtStatsDayApp extends App { Stats A... Stats B... Stats C... ..... } 有人在一个类中放置了许多统计计算(大部分不相关),并使用shell提交。我发现它有两个问题: 如果一个状态卡住,则下面的其他状态无法运行 如果一个stat失败,那么应用程序将从头开始重新运行 我有两种重构解
object PtStatsDayApp extends App {
Stats A...
Stats B...
Stats C...
.....
}
有人在一个类中放置了许多统计计算(大部分不相关),并使用shell提交。我发现它有两个问题:
- 如果一个状态卡住,则下面的其他状态无法运行
- 如果一个stat失败,那么应用程序将从头开始重新运行 我有两种重构解决方案:
- 将每个stat放在一个类中,但需要更多的脚本。这个解决方案是否会因为提交这么多而带来很多开销
- 并行运行这些统计。这个问题是资源紧张还是spark可以适当地处理李>
还有其他想法或最佳实践吗?谢谢,有几个3d无党派Spark调度器,比如Airflow,但我建议使用Spark Launcher API并以编程方式编写启动逻辑。使用此API,您可以并行、顺序或任意方式运行作业 链接到文档:
并行运行作业的效率主要取决于Spark群集配置。一般来说,Spark支持此类工作负载。有几种3d无党派Spark调度器,如Airflow,但我建议使用Spark Launcher API并以编程方式编写启动逻辑。使用此API,您可以并行、顺序或任意方式运行作业 链接到文档:
并行运行作业的效率主要取决于Spark群集配置。Spark通常支持此类工作负载。首先,您可以将调度程序模式设置为
FAIR
。然后可以使用并行集合在多线程驱动程序上同时启动Spark作业。
一个平行的集合,比如说。。。十个Stats
查询的并行序列ParSeq
,可以使用foreach
逐个触发每个Stats
查询。它将取决于驱动程序有多少内核以及可以同时使用多少线程。默认情况下,全局执行上下文有那么多线程
查看这些帖子,它们是使用并行集合启动并发spark作业的示例
首先,您可以将计划程序模式设置为
FAIR
。然后可以使用并行集合在多线程驱动程序上同时启动Spark作业。
一个平行的集合,比如说。。。十个Stats
查询的并行序列ParSeq
,可以使用foreach
逐个触发每个Stats
查询。它将取决于驱动程序有多少内核以及可以同时使用多少线程。默认情况下,全局执行上下文有那么多线程
查看这些帖子,它们是使用并行集合启动并发spark作业的示例