나는 더미 변수로 열 무리를 변환 해요. 데이터 프레임에서 원래의 범주 형 변수를 제거하려고합니다. 나는 스파크 릴에서 어떻게하는지 알아 내려고 애 쓰고있다. dplyr에서는 간단하지만 darker 기능은 sparklyr에서 작동하지 않습니다.무엇 열 데이터 형식을 기반으로 스파크 데이터 프레임 (sparklyr) 하위 집합에 가장 좋은 방법입니다
###create dummy data to figure out how model matrix formulas work in sparklyr
v1 <- sample(LETTERS[1:4], 50000, replace=TRUE, prob=c(0.1, 0.2, 0.65, 0.05))
v2 <- sample(LETTERS[5:6], 50000, replace=TRUE, prob=c(0.7,0.3))
v3 <- sample(LETTERS[7:10], 50000, replace=TRUE, prob=c(0.3, 0.2, 0.4, 0.1))
v4 <- sample(LETTERS[11:15], 50000, replace=TRUE, prob=c(0.1, 0.1, 0.3, 0.05,.45))
v5 <- sample(LETTERS[16:17], 50000, replace=TRUE, prob=c(0.4,0.6))
v6 <- sample(LETTERS[18:21], 50000, replace=TRUE, prob=c(0.1, 0.1, 0.65, 0.15))
v7 <- sample(LETTERS[22:26], 50000, replace=TRUE, prob=c(0.1, 0.2, 0.65, 0.03,.02))
v8 <- rnorm(n=50000,mean=.5,sd=.1)
v9 <- rnorm(n=50000,mean=5,sd=3)
v10 <- rnorm(n=50000,mean=3,sd=.5)
response <- rnorm(n=50000,mean=10,sd=2)
dat <- data.frame(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,response)
write.csv(dat,file='fake_dat.csv',row.names = FALSE)
#push "fake_dat" to the hdfs
library(dplyr)
library(sparklyr)
#configure the spark session and connect
config <- spark_config()
config$`sparklyr.shell.driver-memory` <- "2G" #change depending on the size of the data
config$`sparklyr.shell.executor-memory` <- "2G"
# sc <- spark_connect(master='local', spark_home='/usr/hdp/2.5.0.0-1245/spark',config = config)
# sc
sc <- spark_connect(master='yarn-client', spark_home='/usr/hdp/2.5.0.0-1245/spark',config = config)
sc
#can also set spark_home as '/usr/hdp/current/spark-client'
#read in the data from the hdfs
df <- spark_read_csv(sc,name='fdat',path='hdfs://pnhadoop/user/stc004/fake_dat.csv')
#create spark table
dat <- tbl(sc,'fdat')
지금 더미 변수를 만들 :
먼저 스파크 dataframe 만들 : 예를 들어
이for(i in 1:7){
dat <- ml_create_dummy_variables(x=dat,colnames(dat)[i], reference = NULL)
}
단순히 사용하여 원래 범주 변수를 삭제할 수를
drop.cols <- colnames(dat)[1:7]
dat1 <-
dat %>%
select(-one_of(drop.cols))
그러나 실제로 작업하는 데이터에는 300 개의 범주 형 변수가 있습니다. 문자/요인 인 열을 식별하는 빠른 방법이 필요합니다. 해당 열을 더미 변수로 변환 한 후 원래의 범주 형 변수를 제거 할 수 있습니다. 나는 해봤 다음
test <-
dat %>%
select_if(is.character)
그때 다음과 같은 오류 얻을 :
Error: Selection with predicate currently require local sources
나는 또한 시도했다 :
cls <- sapply(dat, class)
cls
을하지만 수 :
> cls
src ops
[1,] "src_spark" "op_base_remote"
[2,] "src_sql" "op_base"
[3,] "src" "op"
방법에 대한 아이디어가 있으십니까? 이 "최고는"스트레칭 것이다 그러나이 같은 시도 할 수 있습니다 호출