You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spark中reduceByKey是否创建新Job?为何代码生成3个Job?

Spark词频统计3个Job的来源解析

关键结论

  • reduceByKey 是转换算子,不会触发新Job——只有行动算子(Action)才会触发Spark执行Job。

3个Job的具体来源

结合你的代码流程,另外两个Job的触发原因基本是这两种情况:

  1. 停用词加载时的行动算子
    如果你是用Spark读取停用词文件(比如sc.textFile("stopwords.txt")),然后调用collect()把它转成本地集合再用于过滤,这个collect()就是行动算子,会触发第一个Job。这是新手常踩的坑——加载依赖数据时不小心触发了执行。
  2. sortBy的全局排序采样Job
    sortBy 要做全局排序,底层依赖sortByKey实现。Spark为了确定每个排序分区的key范围,会先跑一个采样Job:对数据采样统计,算出分区边界,才能保证全局有序。这个采样操作会生成第二个Job。
  3. take触发的最终计算Job
    你已经知道的take(25)是行动算子,触发第三个Job,执行从读数据到词频统计、排序的完整流程,返回前25个结果。

快速自查

如果你的停用词是硬编码的本地列表(不是从Spark读取后转的),那第二个Job肯定是sortBy的采样流程。可以检查代码里有没有take之外的其他行动算子(比如collect()、count()、saveAsTextFile()),这些都是Job的触发源。

内容的提问来源于stack exchange,提问作者sumanth kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 10:55:05