2017-03-17 8 views
0

R에서 lapply() 메소드를 spark.lapply()로 변환하는 동안 문제가 발생합니다.lapply()에서 spark.lapply()로 변환 문제

Error in writeType(con, serdeType) : 
    Unsupported type for serialization nonstandardGenericFunction 

: 그래서 내 R 코드는이

> lst <- lapply(1:(length(SampleData$A)-n), function(i) SampleData$A[i:(i+n)]) 
> names(lst) <- paste0("SampleData$A", seq_along(lst)) 
> list2env(lst, envir = .GlobalEnv) 

내가 spark.lapply 사용 sparkR에서 같은 통합하고() 그러나

count <- function(i) { 
    df2$A[i:(i+n)] 
} 
lst <- spark.lapply(1:(length(df2$A)-n), count) 

, 나는 다음과 같은 오류를 얻고있다처럼 보인다 나는 sparkR에 비교적 새로운 것이므로 어떤 도움을 주시면 감사하겠습니다. 고맙습니다 !

+0

게시 할 수 있습니까? 좋은 데이터? –

+0

@ManikantaMaheshByra > $ 샘플 데이터 $ A1 $ LST 샘플 데이터 $ A2 <- [1] 14.58 38.88 95.98 49.66 1.94 > $ 샘플 데이터 $ A3

답변

0

내 제한된 경험으로 spark.lapply을 사용하는 경우 기본적으로 네임 스페이스를 명시 적으로 지정해야합니다. 외부 패키지를 사용하는 경우 특히

다른 말로하면 spark.lapply이 알고 있어야 할 다른 종류의 변수가 함수 내부에 있어야한다는 것을 명시해야합니다. 도움말 파일은 일반적으로 지구 환경에서 사물을 집어 들고 있다고하지만,이 방법은

의사 코드에 lapply 정말이

과 같아야합니다 ... 그것이 작동하지 않을 때 당신이 당신의 정신을 유지할 수 있습니다
spark.lapply([(x1, y1), (x2, y2), (x3, y3)], function(x) do_stuff(x[1], x[2])) 

여기에서 do_stuff은 자체 환경 이외의 다른 것에 의존해서는 안됩니다. 내 경험으로는 option(na.pass)과 같은 옵션을 함수 내에서 정의해야합니다. 이 매뉴얼은 또한로드 한 모든 라이브러리를 다시 지정하도록 알려줍니다!

코드와 관련하여

, I는 다음과 같이 그것을 바꿀 것 :

count <- function(i, df2) { 
    df2$Sepal.Length[i:(i+n)] 
} 

df2 <- iris 
n = 3 

# creating a new list of parameters as in the code example above 
# this will be: 
# [(integer, dataframe)] 
input_list <- lapply(1:(length(df2$Sepal.Length)-n), function(x) return(list(i=x, df2=df2))) 

# doing what you did above 
lst <- lapply(input_list, function(x) count(x$i, x$df2)) 
splst <- spark.lapply(input_list, function(x) count(x$i, x$df2)) 

을 당신은 내가 이런 식으로 lapply 설정하는 것이 좋습니다 환경 변수를 사용하려면 :

lst <- lapply(1:(length(df2$Sepal.Length)-n), function(x) count(x$i, df2)) 
splst <- spark.lapply(1:(length(df2$Sepal.Length)-n), function(x) count(x$i, df2)) 

정상적으로 작동하지만 표준 R 유형이 아닌 객체 인 경우 이상한 일이 발생합니다 (예 : xgb.Dmatrix 개체)