Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用sparklyr中的dplyr计算每列中唯一元素的数量_R_Apache Spark_Statistics_Dplyr_Sparklyr - Fatal编程技术网

使用sparklyr中的dplyr计算每列中唯一元素的数量

使用sparklyr中的dplyr计算每列中唯一元素的数量,r,apache-spark,statistics,dplyr,sparklyr,R,Apache Spark,Statistics,Dplyr,Sparklyr,我试图计算spark数据集中每列中唯一元素的数量 然而,spark似乎不认识tally() k%按(分组类型)分组%>%每个汇总(funs(计数(不同)(.俬俬俬)) 错误:org.apache.spark.sql.AnalysisException:未定义函数 spark似乎也不识别简单的r函数,比如“唯一”或“长度”。我可以在本地数据上运行代码,但当我试图在spark表上运行完全相同的代码时,它就不起作用了 ``` d%总结每个(funs(长度(唯一)()) 一个tibble:2×3 组

我试图计算spark数据集中每列中唯一元素的数量

然而,spark似乎不认识tally()

k%按(分组类型)分组%>%每个汇总(funs(计数(不同)(.俬俬俬))
错误:org.apache.spark.sql.AnalysisException:未定义函数

spark似乎也不识别简单的r函数,比如“唯一”或“长度”。我可以在本地数据上运行代码,但当我试图在spark表上运行完全相同的代码时,它就不起作用了

```

d%总结每个(funs(长度(唯一)())
一个tibble:2×3
组X1-X2
1 a 5 1
2 b 5 1
k%分组依据(分组类型)%>%每个汇总(funs(长度(唯一)(.щщ))
错误:org.apache.spark.sql.AnalysisException:未定义的函数唯一;
```
库(SparkyR)
图书馆(dplyr)
#我在星火2.1版
#建筑示例输入(本地)
d%
收集
#输出
组X1-X2
1 b 5 1
2 a 5 1
注意:考虑到我们使用的是
sparklyr
,我选择了
dplyr::n_distinct()

次要:
dplyr::summary_每个
都不推荐使用。因此,
dplyr::summary_all

记住,当您编写sparlyr时,您实际上是在传输spark sql,因此您可能需要不时使用spark sql动词。这是spark sql动词如
count
distinct
派上用场的时候之一

library(sparkylr)

sc <- spark_connect()
iris_spk <- copy_to(sc, iris)

# for instance this does not work in R, but it does in sparklyr
iris_spk %>%
  summarise(Species = distinct(Species))
# or
iris_spk %>%
  summarise(Species = approx_count_distinct(Species))

# this does what you are looking for
iris_spk %>% 
    group_by(species) %>%
    summarise_all(funs(n_distinct))

# for larger data sets this is much faster
iris_spk %>% 
    group_by(species) %>%
    summarise_all(funs(approx_count_distinct))
库(sparkylr)
sc%
总结(种类=大约数量(种类))
#这正是你想要的
iris_spk%>%
组别(种类)%>%
总结所有(funs(n_独特))
#对于较大的数据集,这要快得多
iris_spk%>%
组别(种类)%>%
总结所有(funs(近似计数)

每个的可能重复项实际上都已弃用,自dplyr 0.5以来,
全部
都是首选项。0@Zafar:谢谢:我的代码已经正确了,但我在最后一个注释中交换了这两个。现在编辑。谢谢你们!我真的很感激@请考虑接受其中一个答案谢谢Zafar!我很感激!正如帕斯基所说,最好将其中一个标记为最佳答案:)
library(sparklyr)
library(dplyr)
#I am on Spark V. 2.1

#Building example input (local)
d <- data.frame(cbind(seq(1, 10, 1), rep(1,10)))
d$group <- rep(c("a","b"), each = 5)
d

#Spark tbl 
sdf <- sparklyr::sdf_copy_to(sc, d)

# The Answer
sdf %>% 
    group_by(group) %>% 
    summarise_all(funs(n_distinct)) %>%
    collect()

#Output
  group    X1    X2
  <chr> <dbl> <dbl>
1     b     5     1
2     a     5     1
library(sparkylr)

sc <- spark_connect()
iris_spk <- copy_to(sc, iris)

# for instance this does not work in R, but it does in sparklyr
iris_spk %>%
  summarise(Species = distinct(Species))
# or
iris_spk %>%
  summarise(Species = approx_count_distinct(Species))

# this does what you are looking for
iris_spk %>% 
    group_by(species) %>%
    summarise_all(funs(n_distinct))

# for larger data sets this is much faster
iris_spk %>% 
    group_by(species) %>%
    summarise_all(funs(approx_count_distinct))