2016-08-14 7 views
0

sparkデータフレームに適用された関数内でlapplyを呼び出そうとしています。ドキュメントによると、Spark 2.0以来可能です。SparkR dapply not working

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

スキーマを追加する必要があるのは、出力の列が入力と同じモードの場合のみです。