doc指出可以在一个Spark Session /上下文中调度多个作业。谁能举例说明如何做到这一点?我可以在将来启动几个工作吗?我应该使用什么执行上下文?我不完全确定Spark如何进行管理。驱动程序或群集如何知道从同一驱动程序内提交的许多作业。有什么信号火花吗?如果有人举个例子,那就太好了。
动机:我的数据基于键值,并且要求与键相关联的每个组都需要在其中进行处理 批量。特别是,我需要使用mapPartition。那是因为在每个 分区我需要实例化一个不可序列化的对象 处理我的记录。
(1)实际上,我确实可以直接在分区中使用scala集合对事物进行分组,并将每个组作为批处理。
(2)我正在探索的另一种方法是在结束之前通过键过滤数据,并为每个过滤结果(过滤的集合)启动动作/作业。这样,无需将每个分区分组,我可以直接将所有分区作为批处理。我假设公平的调度程序会做得很好,以便在工作之间平均地调度事务。如果公平的Scheduler运作良好,我认为此解决方案会更有效。但是,我需要对其进行测试,因此,我想知道是否有人可以提供有关如何在Spark会话中实现线程的帮助,并警告它是否存在任何不利方面。
此外,如果有人必须在两种方法之间做出选择/评估,结果是什么。
注意:这是一个流应用程序。与键关联的每组记录都需要实例化对象的特定配置,以进行处理(必须成批处理)。该对象不可序列化,需要针对每个分区实例化