【问题标题】:Duplicate jobs are being generated in DAG for the same action in Spark在 DAG 中为 Spark 中的相同操作生成重复作业
【发布时间】:2019-10-18 23:06:21
【问题描述】:

我有一个 spark-streaming 作业,我从消息队列接收数据并处理一堆记录。在此过程中,我在数据集上有一个 take() 方法。尽管 take 操作正在以预期的方式发生,但在 DAG 可视化中,我看到创建了多个作业 ID,并且它们都具有相同的 take action。仅当数据为数十万条记录时才会发生这种情况。在本地机器上运行数十条记录时,我没有观察到多余的作业。谁能帮我理解这种行为背后的原因?

作业 ID -(91 到 95)基本上运行相同的动作。下面是上面提到的动作对应的代码sn-p。

val corruptedMessageArray: Array[ String ] = corruptedMessageDs.take(1);
    if ( !corruptedMessageArray.isEmpty ) {
        val firstCorruptedMessage: String = corruptedMessageArray( 0 )
    }

【问题讨论】:

    标签: scala apache-spark bigdata spark-streaming apache-spark-dataset


    【解决方案1】:

    您的问题似乎是 Spark 是否创建了重复作业。

    如果您查看屏幕截图,您会发现作业具有不同数量的任务,因此这不是简单的重复问题。

    我不确定到底发生了什么,但对于大型数据集take() 似乎需要几个快速的后续工作。也许是因为它设计了工作,也许是因为它需要尝试需要完成多少工作。

    【讨论】:

    • 是的,刚刚意识到执行相同操作的作业具有不同数量的任务。
    • 但是,这仍然不能解释为什么执行一个“动作”需要多个作业本身
    • 我观察到同样的行为。你找到答案了吗?
    • @Mazar 我的帖子包含对我能找到的答案的最佳估计。如果这不适用于您的情况,请考虑提出一个新问题。 (请务必参考这篇文章,并说明您面临的其他挑战/您的情况有何不同)。
    猜你喜欢
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    • 2013-01-14
    • 1970-01-01
    • 1970-01-01
    • 2019-07-14
    相关资源
    最近更新 更多