我试图在应用于火花数据帧的函数中调用lapply。根据文档,它可能是自Spark 2.0以来的。
wrapper = function(df){
out = df
out$len <- unlist(lapply(df$value, function(y) length(y)))
return(out)
}
# dd is Spark Data Frame with one column (value) of type raw
dapplyCollect(dd, wrapper)
它返回错误:
Error in invokeJava(isStatic = FALSE, objId$id, methodName, ...): org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 37.0 failed 1 times, most recent failure: Lost task 0.0 in stage 37.0 (TID 37, localhost): org.apache.spark.SparkException: R computation failed with
Error in (function (..., deparse.level = 1, make.row.names = TRUE) :
incompatible types (from raw to logical) in subassignment type fix
以下工作正常:
wrapper(collect(dd))
但我们希望计算在节点上运行(而不是在驱动程序上)。
可能是什么问题?有一个related question,但它没有帮助。 感谢。
答案 0 :(得分:0)
您需要添加架构,因为如果输出的列与输入的模式相同,则只能默认。