4
我對Spark很新穎,目前正在使用R API通過Sparkly包使用它。我從配置單元查詢中創建了一個Spark數據框。數據類型未在源表中正確指定,我試圖通過利用dplyr
包中的函數來重置數據類型。以下是我試過的代碼:將列數據類型更改爲sparklyr的因子
prod_dev <- sdf_load_table(...)
num_var <- c("var1", "var2"....)
cat_var <- c("var_a","var_b", ...)
pos1 <- which(colnames(prod_dev) %in% num_var)
pos2 <- which(colnames(prod_dev) %in% cat_var)
prod_model_tbl <- prod_dev %>%
mutate(age = 2016- as.numeric(substr(dob_yyyymmdd,1,4))) %>%
mutate(msa_fg = ifelse(is.na(msacode2000), 0, 1)) %>%
mutate(csa_fg = ifelse(is.na(csacode), 0, 1)) %>%
mutate_each(funs(factor), pos2) %>%
mutate_each(funs(as.numeric), pos1)
如果prod_dev是R數據幀,代碼將工作。但使用它時,Spark數據幀上似乎並沒有產生正確的結果:
> head(prod_model_tbl)
Source: query [?? x 99]
Database: spark connection master=yarn-client app=sparklyr_test local=FALSE
Error: org.apache.spark.sql.AnalysisException: undefined function FACTOR; line 97 pos 2248 at org.apache.spark.sql.hive.HiveFunctionRegistry....
可有人請告知如何做出相應的Spark數據幀所需的更改?