如何替换SparkR中的gapply
函数?我想聚合一些数据并将函数应用于聚合数据,而我不想要一个collect()函数,数据不会回到驱动程序机器上。
我有DatraFrame
Spark:
CNPJ PID DATA N
23104577000149 7898586660649 2016-02-01 2
23104577000149 7898132542078 2016-02-01 2
11660954000147 7898944830295 2016-02-01 2
10140281000131 7896496920747 2016-02-01 1
23104577000149 7891772150900 2016-02-01 1
10140281000131 789895720413854 2016-01-31 1
我希望聚合CNPJ和PID字段。
像这样:schema <- structType(structField("CNPJ", "string"),
structField("PID", "string"),
structField("DATA", "date"),
structField("N", "double"))
result <- gapply(
ds_filtered,
c("CNPJ", "PID"),
function(key, x)
{
dts <- data.frame(key, DATA = seq(min(as.Date(x$DATA)), as.Date(e_date), "days"))
colnames(dts)[c(1, 2)] <- c("CNPJ", "PID")
y <- data.frame(key, DATA = as.Date(x$DATA), N = x$N)
colnames(y)[c(1, 2)] <- c("CNPJ", "PID")
y <- dplyr::left_join(dts, y, by = c("CNPJ", "PID", "DATA"))
y[is.na(y$N), 4] <- 0
data.frame(CNPJ = as.character(y$CNPJ),
PID = as.character(y$PID),
DATA = as.Date(y$DATA),
N = y$N)
},
schema
)
在我的gapply
中,我使用日期(类型日期)填写DATA列。然后我用零填写缺少的日期。
gapply
在Databricks环境中不起作用(矿石:https://issues.apache.org/jira/browse/SPARK-19711)。
所以,我不能使用gapply
。 : - (
谢谢!