我有一个使用flambo星火api函数在clojure中开发的函数。
(:require [flambo.api :as f]
[clojure.string :as s])
(defn get-distinct-column-val
"input = {:col val}"
[ xctx input ]
(let [{:keys [ col ]} input
column-values []
result (f/map (:rdd xctx) (f/fn [row]
(if (s/blank? (get row col))
nil
(assoc column-values (get row col)))))]
(println "Col values: " column-values)
(distinct column-values)))我试着打印列值的值
Col values: []是否有理由这样做呢?
我尝试用以下内容替换上面函数中的println:
(println "Result: " result)得到了以下信息:
#<JavaRDD MapPartitionsRDD[16] at map at NativeMethodAccessorImpl.java:-2>谢谢!
发布于 2015-07-28 12:24:48
代码中的任何内容都不会改变column-values绑定。在这里,我不确定flambo是如何工作的,但是您应该看的是result,而不是column-values。
assoc采用两个参数--一个关联集合和一个位置。我怀疑在这里你真的想要conj。assoc或conj都不改变所提供的集合--我们在这里使用不可变的数据类型。
我希望访问result还没有您所期望的答案,因为您希望assoc在每个调用中构建一个值(与f/map的结果不同)。在这种情况下,您可能需要reduce。
https://stackoverflow.com/questions/31676010
复制相似问题