我在256GB RAM服务器上运行RStudio Server,在另一台服务器上运行MS-SQL-Server 2012。该数据库包含的数据允许我构建一个包含约1亿个节点和约1.5亿个边缘的图形。
我有时间从这些数据构建此图表需要多长时间:
edges = rbind(df1, df2, df3, df4)
= 6分钟mygraph = graph.data.frame(edges)
= 30分钟所以两个多小时。由于我的数据非常稳定,我想通过将mygraph
保存到磁盘可以加快速度。但是当我试图加载它时,它就不会。经过4个小时的等待,我放弃了,认为出了问题。
所以我重新启动服务器,删除我的.rstudio文件夹并重新开始,这次以RData和RDS格式保存每个SQL查询和edges
数据帧的数据帧(save()
和{每次{1}},saveRDS()
。每次保存后,我都会计算五个数据帧的compress = FALSE
和load()
次。 readRDS()
和load()
几乎相同的时间:
足够好,我想。但是今天当我开始一个新的会话并试图readRDS()
对它进行一些修改时,我又感觉到有些事情是错的。等待加载20分钟后,我放弃了。内存,磁盘和CPU不应该是问题,因为我是唯一使用此服务器的人。我已经重新启动了服务器并删除了我的.rstudio文件夹,认为可能在那里挂了我的会话,但数据帧仍然无法加载。虽然load(df1)
正在运行,但load()
显示没有磁盘活动,这是我从iotop
获得的
ps
我不知道下一步该尝试什么。对我来说,加载RData文件所花费的时间比查询位于不同服务器上的SQL数据库要长。即使它确实如此,那么为什么在保存数据帧后我计时ps -C rsession -o %cpu,%mem,cmd
%CPU %MEM CMD
99.5 0.3 /usr/lib/rstudio-server/bin/rsession -u myusername
和load()
时这么快?
这是我第一次在StackOverflow上问一些东西,很抱歉,如果我忘记提及一些对你很重要的东西来回答这个问题。如果我这样做,请告诉我。
编辑:布兰登在评论中要求的一些其他信息。 OS是CentOS 7.数据帧包含前两列中的边缘列表(col1 = node1; col2 = node2)和边缘属性的两个附加列。所有列都是字符串,长度在5到14个字符之间。我还在原始帖子中添加了每个数据帧的大致行数。谢谢!