<p>dplyr 0.6.0 与 sparklyr 0.5.5 的 CRAN 版本的连接问题</p>

创建于 2017-05-29  ·  4评论  ·  资料来源: tidyverse/dplyr

当前 (5-28-2017) 的dplyr 0.6.0 开发版本似乎不允许与当前 CRAN 版本sparklyr 0.5.5 的通用列名连接。 这意味着如果此版本的dplyrsparklyr也在 CRAN 上更新之前在 CRAN 上成为当前版本,那么生产用户代码将在批量更新时中断(例如update.packages() )。 作为sparklyr用户,我建议将其视为重要的依赖包 ( sparklyr ) 打破dplyr建议的 CRAN 更新(无论sparklyr的自动检查状态如何)

如果我们升级到sparklyr 0.5.5.9000 的开发版本,问题似乎就消失了。

我正在重新提交问题,因为我已经改进了reprexes,并测试和记录了更多的包版本组合。 我在这里重新提交它,因为这个问题似乎与dplyr本身有关(尤其是sparklyr似乎已经有了一个只需要渗透到 CRAN 的修复程序)。

失败和成功的代表如下。

# devtools::install_github("tidyverse/dplyr")
# devtools::install_github('tidyverse/dbplyr')
suppressPackageStartupMessages(library('dplyr'))
library('sparklyr')

sc <- spark_connect(version='2.0.2', 
                              master = "local")
d1 <- copy_to(sc, data.frame(x=1:3, y=4:6), 'd1')
d2 <- copy_to(sc, data.frame(x=1:3, y=7:9), 'd2')

left_join(d1, d2, by='x')
#> Error: Column `y` must have a unique name

# print versions
packageVersion("dplyr")
#> [1] '0.6.0'
packageVersion("sparklyr")
#> [1] '0.5.5'
if(requireNamespace("dbplyr", quietly = TRUE)) {
  packageVersion("dbplyr")
}
#> [1] '0.0.0.9001'
R.Version()$version.string
#> [1] "R version 3.4.0 (2017-04-21)"

# cleanup 
spark_disconnect(sc)
# devtools::install_github("tidyverse/dplyr")
# devtools::install_github('tidyverse/dbplyr')
suppressPackageStartupMessages(library('dplyr'))
library('sparklyr')

sc <- spark_connect(version='2.0.2', 
                              master = "local")
d1 <- copy_to(sc, data.frame(x=1:3, y=4:6), 'd1')
d2 <- copy_to(sc, data.frame(x=1:3, y=7:9), 'd2')

left_join(d1, d2, by='x')
#> # Source:   lazy query [?? x 3]
#> # Database: spark_connection
#>       x   y.x   y.y
#>   <int> <int> <int>
#> 1     1     4     7
#> 2     2     5     8
#> 3     3     6     9

# print versions
packageVersion("dplyr")
#> [1] '0.6.0'
packageVersion("sparklyr")
#> [1] '0.5.5.9000'
if(requireNamespace("dbplyr", quietly = TRUE)) {
  packageVersion("dbplyr")
}
#> [1] '0.0.0.9001'
R.Version()$version.string
#> [1] "R version 3.4.0 (2017-04-21)"

# cleanup 
spark_disconnect(sc)

所有4条评论

感谢您报告此@JohnMount ,非常感谢。

这里的问题是,为了支持sparklyr中的连接, sparklyr必须在以前的版本中覆盖dplyr内部,避免使用USING的修复现在支持dplyr ; 但是, sparklyr仍然覆盖内部结构,并且dplyr的内部结构发生了显着变化,导致了这个问题。

我认为最好的方法是在发布dplyr 0.6的同时为sparklyr发布补丁。 这是更改https://github.com/rstudio/sparklyr/commit/0c39d2e403a66b6ae3ed563a09003cdbb23ffbeb和 CRAN 补丁: https ://github.com/rstudio/sparklyr/releases/tag/v0.5.6

@JohnMount如果您可以试用这个v0.5.6补丁,这将对社区非常有帮助,非常感谢! 该修复仅影响JOINS ,但不限于LEFT JOINS

@hadley当您向 CRAN 提交dplyr 0.6以提交sparklyr 0.5.6补丁时,您能在 Slack 上 ping 我吗?

谢谢@javierluraschi

看起来dplyr 0.7.0已经在 CRAN 上运行,并且(如预期的那样)不适用于 CRAN 0.5.5版本的Sparklyr

suppressPackageStartupMessages(library('dplyr'))
library('sparklyr')

sc <- spark_connect(version='2.0.2', 
                    master = "local")
d1 <- copy_to(sc, data.frame(x=1:3, y=4:6), 'd1')
d2 <- copy_to(sc, data.frame(x=1:3, y=7:9), 'd2')

left_join(d1, d2, by='x')
#> Error: Column `y` must have a unique name


# print versions
packageVersion("dplyr")
#> [1] '0.7.0'

packageVersion("sparklyr")
#> [1] '0.5.5'

if(requireNamespace("dbplyr", quietly = TRUE)) {
  packageVersion("dbplyr")
}
#> [1] '1.0.0'

R.Version()$version.string
#> [1] "R version 3.4.0 (2017-04-21)"

# cleanup 
spark_disconnect(sc)

devtools::install_github("rstudio/sparklyr") Give 似乎运行良好(但请注意,这会降低dbplyr的版本):

suppressPackageStartupMessages(library('dplyr'))
library('sparklyr')

sc <- spark_connect(version='2.0.2', 
                    master = "local")
d1 <- copy_to(sc, data.frame(x=1:3, y=4:6), 'd1')
d2 <- copy_to(sc, data.frame(x=1:3, y=7:9), 'd2')

left_join(d1, d2, by='x')
#> # Source:   lazy query [?? x 3]
#> # Database: spark_connection
#>       x   y.x   y.y
#>   <int> <int> <int>
#> 1     1     4     7
#> 2     2     5     8
#> 3     3     6     9


# print versions
packageVersion("dplyr")
#> [1] '0.7.0'

packageVersion("sparklyr")
#> [1] '0.5.5.9002'

if(requireNamespace("dbplyr", quietly = TRUE)) {
  packageVersion("dbplyr")
}
#> [1] '0.0.0.9001'

R.Version()$version.string
#> [1] "R version 3.4.0 (2017-04-21)"

# cleanup 
spark_disconnect(sc)

我们可能会要求人们“转到 Sparklyr 的开发版本”,但是为了确保给定标签或分支是稳定的以及确切需要什么版本的东西,这将是一件好事。 希望 CRAN 能让你快速发布Sparklyr补丁(如果你问的话,他们有时会这样做)。

sparklyr修复正在提交给 CRAN 等待响应...

@JohnMount现在在 CRAN 上。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

JohnMount picture JohnMount  ·  3评论

slyrus picture slyrus  ·  3评论

DasHammett picture DasHammett  ·  3评论

steromano picture steromano  ·  4评论

NightWinkle picture NightWinkle  ·  3评论