SparkR. Как подсчитать различные значения для всех столбцов в Spark DataFrame?

Мне интересно, есть ли способ подсчитать количество отдельных элементов в каждом столбце фрейма данных искры? То есть, учитывая этот набор данных:

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?

sdf<- SparkR::createDataFrame(df)

Любая помощь приветствуется. Заранее спасибо. -врожденный


person nate    schedule 22.09.2017    source источник


Ответы (1)


У меня это работает в 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
person Psidom    schedule 22.09.2017