Sparklyr 0.5 已在CRAN正式发布

浏览: 2082

Sparklyr 0.5 包已经在CRAN正式发布,新的版本在以下几个方面做了优化:

1)加强对dplyr支持,如do( )和n_distinct( )

2)增加新的函数,如sdf_quantile( )、ft_tokenizer( )、ft_regex_tokenizer( )

3)强化对R的兼容性,如缺失值na.action、dim( )、nrow( )、ncol( )

4)spark.rstudio.com 上部署新的案例等

其他的最新优化,可以到官网查看噢!

1. 强化对Dplyr支持

sparklyr 0.5 添加了n_distinct( ),在速度和准确度上与length(uqique(x))相当,同时支持do( )和group_by( ),程序如下:

library(sparklyr)sc <- spark_connect(master = "local")mtcars_tbl <- copy_to(sc, mtcars, overwrite = TRUE)by_cyl <- group_by(mtcars_tbl, cyl)fit_sparklyr <- by_cyl %>% 
  do(mod = ml_linear_regression(mpg ~ disp, data = .))# display resultsfit_sparklyr$mod

输出:

[[1]]
Call: ml_linear_regression(mpg ~ disp, data = .)
Coefficients:
(Intercept)         disp
19.081987419  0.003605119
[[2]]
Call: ml_linear_regression(mpg ~ disp, data = .)
Coefficients:
(Intercept)        disp
40.8719553  -0.1351418
[[3]]
Call: ml_linear_regression(mpg ~ disp, data = .)
Coefficients:
(Intercept)        disp
22.03279891 -0.01963409

 在这里需要注意的是,当sparklyr提供对dplyr支持时,在使用sparklyr时,并不一定必须要使用dplyr。比如可以使用DBI 而不使用dplyr。

library(sparklyr)
library(DBI)sc <- spark_connect(master = "local")
sdf_copy_to(sc, iris)
dbGetQuery(sc, "SELECT * FROM iris LIMIT 4")
 Sepal_Length Sepal_Width Petal_Length Petal_Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa

2. 新的函数

当使用ft_tokenizer( )和ft_regex_tokenizer( )通过空格或者正则模式划分字符串时,sdf_quantile( )函数计算近似分位数(存在一定误差)。下面以ft_tokenizer函数为例。

library(sparklyr)
library(janeaustenr)
library(dplyr)

sc %>%
 spark_dataframe() %>%
 na.omit() %>%
 ft_tokenizer(input.col = “text”, output.col = “tokens”) %>%
 head(4)

输出:

              text                book     tokens
                 <chr>               <chr>     <list>
1 SENSE AND SENSIBILITY Sense & Sensibility <list [3]>
2                       Sense & Sensibility <list [1]>
3        by Jane Austen Sense & Sensibility <list [3]>
4                       Sense & Sensibility <list [1]>

3. 增强兼容性

library(sparklyr)
library(dplyr)
library(nycflights13)sc <- spark_connect(master = "local")flights_clean <- na.omit(copy_to(sc, flights))

ml_linear_regression(
 flights_tbl
 response = "dep_delay",
 features = c("arr_delay", "arr_time"))
* Dropped 9430 rows with 'na.omit' (336776 => 327346)
Call: ml_linear_regression(flights_tbl, response = "dep_delay",features = c("arr_delay", "arr_time"))

Coefficients:
(Intercept)    arr_delay     arr_time
6.1001212994 0.8210307947 0.0005284729

除此之外,dim( )、nrow( )和ncol( )在sparklyr的数据框中也已经支持。

4. Livy连接使用

Livy是是Apache Spark的一个开源REST服务,现在可以在sparklyr 0.5中使用,在许多场景下,在Livy可用时,可以将RStudio和Apache Spark进行连接。

 在本地使用Livy时,可以使用livy_install( )安装Livy在本地环境,这与spark_install( )类似。Livy支持远程连接Apache Spark时,需要先使用livy_service_start( )。

livy_install()
livy_service_start()sc <- spark_connect(master = "http://localhost:8998",                    method = "livy")
copy_to(sc, iris)

spark_disconnect(sc)
livy_service_stop()

在使用RStudio时,远程连接样式如下:

Clipboard Image.png

5. 增强连接

sparklyr 0.5 不再要求必须联网下载Apache Spark包

> library(sparklyr)> sc <- spark_connect(master = "local",                      config = list("sparklyr.gateway.port" = "0"))Error in force(code) : 
 Failed while connecting to sparklyr to port (0) for sessionid (5305):   Gateway in port (0) did not respond.  Path: /spark-1.6.2-bin-hadoop2.6/bin/spark-submit
 Parameters: --class, sparklyr.Backend, 'sparklyr-1.6-2.10.jar', 0, 5305---- Output Log ----16/12/12 12:42:35 INFO sparklyr: Session (5305) starting---- Error Log ----

备注:其他最新功能请点击阅读原文进行学习~

Clipboard Image.png

推荐 2
本文由 R语言中文社区 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册