首页 > 解决方案 > 如何在 Spark 管道中引用特定的 DataFrame?

问题描述

假设我在 Spark 中有两个具有相同功能的 Spark DataFrame,并且我想构建一个管道来交叉验证它们。如何引用管道中的每个表?我sparklyr在 R 中使用来执行此操作,但我想它应该与pyspark.

首先,我可以使用以下代码构建线性回归并使用交叉评估它ml_cross_validator()

suppressMessages(library(sparklyr))
suppressMessages(library(tidyverse))
sc <- spark_connect(master = "local")

copy_to(sc, mtcars, "mtcars")

mtcars <- tbl(sc, "mtcars")

pipeline <- ml_pipeline(sc) %>%
    ft_r_formula(mpg ~ .) %>%
    ml_linear_regression()

grid <- list(linear_regression = list(reg_param = 0))

cv <- ml_cross_validator(
    sc,
    estimator = pipeline, # use our pipeline to estimate the model
    estimator_param_maps = grid, # use the params in grid
    evaluator = ml_regression_evaluator(sc, metric_name = "rmse"),  # how to evaluate the CV
    num_folds = 2, # number of CV folds
    seed = 2018
)

cv_model <- ml_fit(cv, mtcars)

cv_model$avg_metrics_df
#>       rmse reg_param_1
#> 1 3.997882           0

reprex 包(v0.3.0)于 2019 年 9 月 13 日创建

但是,如果我添加另一个具有相同功能的表:

mtcars_sample <- sdf_sample(mtcars, fraction = 0.8) %>%
    sdf_register("mtcars_sample")

我如何在管道中引用它?

─ Session info ───────────────────────────────────────────────────────────────────────────────────────────────────────
 setting  value                       
 version  R version 3.6.0 (2019-04-26)
 os       macOS Mojave 10.14.6        
 system   x86_64, darwin15.6.0        
 ui       RStudio                     
 language (EN)                        
 collate  en_US.UTF-8                 
 ctype    en_US.UTF-8                 
 tz       Europe/Stockholm            
 date     2019-09-13                  

标签: rapache-sparkpysparksparklyr

解决方案


推荐阅读