当前位置: 首页 > 知识库问答 >
问题:

Spark Streaming如何在驱动程序和执行者之间安排映射任务?

施彬彬
2023-03-14

我使用阿帕奇火花2.1和阿帕奇Kafka0.9。

我有一个Spark Streaming应用程序,它与20个执行程序一起运行,并从具有20个分区的Kafka读取。此Spark应用程序仅执行map⃣Map操作。

以下是Spark应用程序的作用:

  1. 从kafka创建一个直接流,间隔15秒
  2. 执行数据验证
  3. 使用仅映射的drool执行转换。没有减少转换
  4. 使用检查和放置写入HBase

我想知道,如果执行器和分区是1-1映射的,每个执行器将独立执行上述步骤并独立写入HBase,或者数据将在多个执行器内洗牌,操作将发生在驱动程序和执行器之间?

共有1个答案

阎功
2023-03-14

Spark作业提交只能在执行器上执行的任务。换句话说,执行器是唯一可以执行任务的地方。驱动因素是协调任务并相应地安排它们。

话虽如此,我认为以下是正确的:

每个执行器是否独立执行上述步骤并独立写入HBase

顺便说一下,答案与使用的Spark版本无关。它一直都是这样的(而且看不出有什么原因会改变甚至应该改变)。

 类似资料:
  • 问题内容: 我研究了,但是示例仅涉及使其重现。我正在寻找一种类似的功能,例如说“每个星期一的凌晨1点执行此任务”的功能。 问题答案: 感谢Patrick Altman,最近发布的1.0.3版现在支持此功能。 例:

  • 所以我在Cassandra数据库中有一个UDT: 当我查询这个时,我可以得到UDTValue,但我不确定如何映射到UDTClass,因为我使用的是Cassandra Java驱动程序2.2.0rc3 在2.1中,有一些类似于本教程的说明。但在2.2.0中,这个(UDTMapper)似乎已经被删除或尚未添加。怎样才能做同样的事情,或者仅仅为了达到同样的效果? 谢谢。

  • 问题内容: 我研究了,但是示例仅涉及使其重现。我正在寻找一种类似的功能,例如说“每个星期一的凌晨1点执行此任务”的功能。 问题答案: 感谢Patrick Altman,最近发布的1.0.3版现在支持此功能。 例: 请参阅更改日志以获取更多信息: http://celeryproject.org/docs/changelog.html

  • 问题内容: 我使用带有标签的php docker容器作为基础: 我将它与可以在主机上找到的基本图像链接在一起。我创建了一个数据库,并用基本值填充了表。 但是尝试访问我的应用程序,我得到: 因此,我认为php容器缺少通过以下方式安装的组件: 我还在以下位置添加了mysql.ini: 如果我告诉我: 但是,错误仍然存​​在。 此外,在运行时: 我得到: 所以看来mysql扩展甚至没有被激活。 我究竟做

  • 背景我试图运行一个火花提交命令,该命令来自Kafka,并在AWS EMR(版本5.23.0)中使用scala(版本2.11.12)执行JDBC接收器到postgres DB。我看到的错误是 假设问题我认为错误告诉我,在执行器上找不到JDBCPostgres驱动程序,这就是为什么它不能下沉到postgres。 以前的尝试我已经做了以下事情: 在我的结构化流作业中将我的驱动程序标识为 在我的火花提交作

  • 我有一个要求,我需要采取我的一些文件的副本,并把它放在内部服务器。这需要定期发生,比如每天晚上8点。这也是一个Swing应用程序,在我的本地PC上运行。我知道我可以使用Java计划任务,或者使用,或者更好的。 但是,问题来了。没有人会仅仅为了这个调度器就让计算机开机24小时。据我所知,如果有人重启电脑,Java调度器也会死掉。相反,一旦任务计划完成,如果计算机已打开,则计划的任务应在每天晚上8点进