小编b39*_*958的帖子

更改列数据类型以使用Sparklyr进行分解

我是Spark的新手,目前正在通过Sparkly包通过R API使用它。我从配置单元查询创建了一个Spark数据框架。在源表中未正确指定数据类型,我试图通过利用dplyr包中的函数来重置数据类型。下面是我尝试的代码:

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)
Run Code Online (Sandbox Code Playgroud)

如果prod_dev是R数据帧,则该代码将起作用。但是在Spark Data框架上使用它似乎无法产生正确的结果:

> 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....
Run Code Online (Sandbox Code Playgroud)

有人可以建议如何对Spark Data Frame进行所需的更改吗?

r dplyr apache-spark apache-spark-sql sparklyr

5
推荐指数
1
解决办法
3277
查看次数

标签 统计

apache-spark ×1

apache-spark-sql ×1

dplyr ×1

r ×1

sparklyr ×1