- 已编辑
如题,在 hadoop 上面有一个表,我在 Rstudio Server 里面链接到数据库,然后获取这个表将表中数据读入R里,完成后,我留意到内存被占了15个G。
接着我用 data.table 包的 fwrite 函数把读入的这个表导出,重启以后再用 fread 函数导入,此时显示内存被占了约6个G。
实际上这个表被导出后,在 Rstudio Server 的 Files 窗格里显示的大小是1.8G。令键者感到不解的是,为撒一个1.8G大小的数据,用不同的方式导入占的内存差别那么大?下面是我用来链接数据库导数据的代码,不造是不是我用的不对。
options(java.parameters = "-Xmx8192m")
library(DBI)
library(rJava)
library(RJDBC)
# 使用 Hive JDBC 驱动
drv <-
JDBC(
"org.apache.hive.jdbc.HiveDriver",
"/..../hive-jdbc-2.1.1-cdh6.3.2-standalone.jar"
) #jar包所在目录
conn <-
dbConnect(drv,
"jdbc:hive2://xxxx:xxxxx/;auth=noSasl", #填IP地址,端口号默认填xxxxx
"xx", #账户名
"xx") #密码
data <- dbGetQuery(conn, "select * from table;")
dbDisconnect(conn) #断开连接