• 软件
  • 为什么在 Rstudio Server 里面,直接链接数据库得到数据后占的内存那么大?

如题,在 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) #断开连接