使用collect将R连接到MySQL时连接丢失
作者:互联网
我想使用dplyr和RMySQL来处理我的大数据. dplyr代码没有问题.问题(我认为)是关于将数据从MySQL导出到R.我的连接每次都被删除,即使我在收集中使用n = Inf.从理论上讲,我的数据应该有超过50K行,但我只能回到15K左右.任何建议表示赞赏.
方法1
library(dplyr)
library(RMySQL)
# Connect to a database and select a table
my_db <- src_mysql(dbname='aermod_1', host = "localhost", user = "root", password = "")
my_tbl <- tbl(my_db, "db_table")
out_summary_station_raw <- select(my_tbl, -c(X, Y, AVERAGE_CONC))
out_station_mean_local <- collect(out_summary_station_raw)
方法2:使用Pool
library(pool)
library(RMySQL)
library(dplyr)
pool <- dbPool(
drv = RMySQL::MySQL(),
dbname = "aermod_1",
host = "localhost",
username = "root",
password = ""
)
out_summary_station_raw <- src_pool(pool) %>% tbl("aermod_final") %>% select(-c(X, Y, AVERAGE_CONC))
out_station_mean_local <- collect(out_summary_station_raw, n = Inf)
警告信息(两种方法):
Warning messages:
1: In dbFetch(res, n) : error while fetching rows
2: Only first 15,549 results retrieved. Use n = Inf to retrieve all.
更新:
检查日志,从服务器端看起来很好.对于我的例子,慢日志表示Query_time:79.348351 Lock_time:0.000000 Rows_sent:15552 Rows_examined:16449696,但是收集只是无法检索完整数据.我可以使用MySQL Bench复制相同的动作.
解决方法:
在最近的RMySQL更新之后,我注意到我无法从大型视图中收集()数据,并且我将其报告为an issue.您的问题可能是相关的.
要尝试的一件事是回滚到最后一个版本.
devtools::install_version("RMySQL", version = "0.10.9",
repos = "http://cran.us.r-project.org")
标签:mysql,r,dplyr,rmysql 来源: https://codeday.me/bug/20190701/1349990.html