我想知道是否有办法计算spark数据帧的每一列中不同项目的数量?也就是说,给定此数据集:
set.seed(123)
df<- data.frame(ColA=rep(c("dog", "cat", "fish", "shark"), 4), ColB=rnorm(16), ColC=rep(seq(1:8),2))
df
我在R中这样做以获得计数:
sapply(df, function(x){length(unique(x))} )
> ColA ColB ColC
4 16 8
我如何为这个Spark DataFrame做同样的事情?
sdf<- SparkR::createDataFrame(df)
非常感谢任何帮助。先感谢您。 -nate
答案 0 :(得分:2)
这适用于我SparkR
:
exprs = lapply(names(sdf), function(x) alias(countDistinct(sdf[[x]]), x))
# here use do.call to splice the aggregation expressions to agg function
head(do.call(agg, c(x = sdf, exprs)))
# ColA ColB ColC
#1 4 16 8