В соответствии с искрой DAG визуализации есть groupBy
выполняются на стадии 1, после groupBy
выполняется на стадии 0. У меня есть только один groupBy
в моем коде, и не ожидать какие-либо других преобразований Я делаю, чтобы получить groupBy
.Посторонние группиЙ в искре DAG
Вот код (clojure
/flambo
):
;; 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 представляет собой последовательность textFile
, map
, groupBy
и Stage 1 является map-values
, map-values
, flat-map
, map
, saveAsTextFile
, но где происходит groupBy
на этапе 1?
С groupBy
вызывает перетасовать, который является вычислительно дорого и отнимает много времени, я не хочу посторонний один, если она может быть оказана помощь.