SparkR:如何在总结中使用列表
SparkR : How to use a list in summarize
我正在尝试使用一个包含 Spark DataFrame 的所有列和函数 last() 的列表,并将该列表放入分组 DF 的 summarize() 中。
列表是这样创建的:
exprs <- lapply(columns(WORK02), function(x) last(x) %>% alias(x))
然后我试着做这样的东西:
WORK03 <- WORK02 %>%
groupBy(column("AGENZIA")) %>%
summarize(exprs)
我收到以下错误:
Error in agg(x, ...) : agg can only support Column or character
如果我在每个示例中仅使用该列表中的一个元素,它会起作用:
WORK03 <- WORK02 %>%
groupBy(column("AGENZIA")) %>%
summarize(exprs[[1]])
输出:
AGENZIA SERV
1 3
但我希望收到的结果是:
AGENZIA SERV COLUMN_1 COLUMN_2 COLUMN_3 .. COLUMN_N
1 3 V1 V2 V3 VN
有办法做到这一点吗?
P.S。问题是我可以使用有限的库包,只有 SparkR...
我找到的解决方案如下:
为了创建我正在尝试的列列表 select 我使用了函数 lapply()
exprs <- lapply(columns(WORK02), function(x) last(x) %>% alias(x))
在那之后,我从列表中删除了所有空值,(这个选项是为了防止有人不想 select 特定列,否则列将被创建为 NULL ,这会给之后给我们一个错误)。
exprs <- exprs[!sapply(exprs,is.null)]
最后我用函数 do.call() 执行 groupBy() + summarize() 在以下模式中:
WORK_TEST1 <- WORK02 %>%
groupBy(column("AGENZIA"))
WORK03 <- do.call(summarize,c(WORK_TEST1,exprs))
通过这次迭代,我收到了我期待的结果:
AGENZIA SERV COLUMN_1 COLUMN_2 COLUMN_3 .. COLUMN_N
1 3 V1 V2 V3 VN
我正在尝试使用一个包含 Spark DataFrame 的所有列和函数 last() 的列表,并将该列表放入分组 DF 的 summarize() 中。
列表是这样创建的:
exprs <- lapply(columns(WORK02), function(x) last(x) %>% alias(x))
然后我试着做这样的东西:
WORK03 <- WORK02 %>%
groupBy(column("AGENZIA")) %>%
summarize(exprs)
我收到以下错误:
Error in agg(x, ...) : agg can only support Column or character
如果我在每个示例中仅使用该列表中的一个元素,它会起作用:
WORK03 <- WORK02 %>%
groupBy(column("AGENZIA")) %>%
summarize(exprs[[1]])
输出:
AGENZIA SERV
1 3
但我希望收到的结果是:
AGENZIA SERV COLUMN_1 COLUMN_2 COLUMN_3 .. COLUMN_N
1 3 V1 V2 V3 VN
有办法做到这一点吗?
P.S。问题是我可以使用有限的库包,只有 SparkR...
我找到的解决方案如下:
为了创建我正在尝试的列列表 select 我使用了函数 lapply()
exprs <- lapply(columns(WORK02), function(x) last(x) %>% alias(x))
在那之后,我从列表中删除了所有空值,(这个选项是为了防止有人不想 select 特定列,否则列将被创建为 NULL ,这会给之后给我们一个错误)。
exprs <- exprs[!sapply(exprs,is.null)]
最后我用函数 do.call() 执行 groupBy() + summarize() 在以下模式中:
WORK_TEST1 <- WORK02 %>%
groupBy(column("AGENZIA"))
WORK03 <- do.call(summarize,c(WORK_TEST1,exprs))
通过这次迭代,我收到了我期待的结果:
AGENZIA SERV COLUMN_1 COLUMN_2 COLUMN_3 .. COLUMN_N
1 3 V1 V2 V3 VN