首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >火花DAG中的外部groupBy

火花DAG中的外部groupBy
EN

Stack Overflow用户
提问于 2015-09-17 16:30:49
回答 1查看 123关注 0票数 2

根据火花DAG,在阶段0执行groupBy之后,在第1阶段执行groupBy。我的代码中只有一个groupBy,不会期望我正在进行的任何其他转换都会导致一个groupBy

下面是代码(clojure / flambo):

代码语言:javascript
复制
;; stage 0
(-> (.textFile sc path 8192)
    (f/map (f/fn [msg] (json/parse-string msg true)))
    (f/group-by (f/fn [msg] (:mmsi msg)) 8192)

;; stage 1
    (f/map-values (f/fn [values] (sort-by :timestamp (vec values))))
    (f/flat-map (ft/key-val-fn (f/fn [mmsi messages]
                                 (let [state-map (atom {}) draught-map (atom {})]
                                   (map #(mk-line % state-map draught-map) (vec messages))))))
  (f/map (f/fn [line] (json/generate-string line)))
  (f/save-as-text-file path)))

在我看来,第0阶段是textFilemapgroupBy,第1阶段是map-valuesmap-valuesflat-mapmapsaveAsTextFile,但是第1阶段的groupBy是从哪里来的呢?

由于groupBy会导致洗牌,这在计算上很昂贵,而且耗费时间,所以如果可以帮助的话,我不想要额外的洗牌。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-05 13:28:40

这里没有多余的groupBy。groupBy是一个两步的过程.第一步是本地map,它从x转换为(f(x), x)。这是第0阶段中表示为groupBy块的部分。

第二步是非局部groupByKey,它在第1阶段被标记为groupBy块,只有这一部分需要洗牌。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32635459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档