2016-07-20 2 views
1

데이터 프레임 df에 수백만 개의 행이 있습니다. 사용자 정의 함수 udf과 함께 ddply을 사용합니다.R에서 ddply를 sparkR 함수로 변환

res <- ddply(df, c("id"),function(x){udf(x)} 

이 꽤 잘 작동하지만 (이 약 4 시간 소요) I 때문에 udf의 생각이 매우 느립니다. 많은 경우를 검사합니다.

sparkR에서 같은 기능을 실행하고 싶습니다. Spark은 R 환경에 통합되어 있습니다. sparkR에서 기본 작업을 수행 할 수 있지만 ddply을 대체 할 수있는 함수를 찾을 수 없습니다. 누구나 아이디어가 있습니까?

답변

0

는 SparkR 2.0를 사용하면 ("ID"다음 각 행의 컬럼을 통해 자신의 기능을 적용하여 gruping) 이런 일을 수행 할 수 gapplyCollect 기능을 사용할 수 있습니다

res <- gapplyCollect(
    df, 
    "id", 
    function(key, x) { 
     y <- data.frame(key, max(x$column1), mean(x$column2), udf(x$column3)) 
     colnames(y) <- c("id", "max_col1", "mean_col2", "udf_result") 
     y 
    }) 

도움이 되었기를 바랍니다.