楼主: 不二不幸福
3132 10

[问答] 如何将大数据写入文件 [推广有奖]

  • 0关注
  • 1粉丝

硕士生

33%

还不是VIP/贵宾

-

威望
0
论坛币
161 个
通用积分
2.8500
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1641 点
帖子
76
精华
0
在线时间
160 小时
注册时间
2017-9-26
最后登录
2024-6-14

楼主
不二不幸福 发表于 2019-2-27 09:31:19 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
有48个txt文件,平均每个文件大小在500M左右,每个都是1千多万行,格式大概像这样:Chr     Start   End     L8N_Methy%      L8N_Met L8N_Unmet       L8N_Depth
chrX    10331   10331   0.00    0       3       3
chrX    10335   10335   100.00  3       0       3
chrX    10337   10337   100.00  3       0       3
chrX    10365   10365   100.00  3       0       3
我想把这48个文件合并起来,所用代码如下:

  1. #!~/miniconda2/bin/Rscript
  2. library(data.table)
  3. a = list.files("/public/home/05_sample_merge/00_normal")
  4. dir = paste("/public/home/05_sample_merge/00_normal/",a,sep="")
  5. n = length(dir)
  6. merge_data = fread(file = dir[1],sep="\t",header=TRUE)
  7. for (i in 2:n){
  8.    new_data = fread(file = dir[i],sep="\t",header=TRUE)
  9.    merge_data = merge(merge_data,new_data,by=c("Chr","Start","End"),all=TRUE)
  10. }

  11. fwrite(merge_data,file = "all_sample_raw_merge.txt",row.names=F)
复制代码
由于最后的结果太大,总是出现memory错误,请问我该怎么办?先几个几个的合并吗?

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:文件合并 怎么办

沙发
cheetahfly 在职认证  发表于 2019-2-27 14:29:47
写入一个SQL数据库,比如SQLite,然后用SQL语句合并。
已有 1 人评分论坛币 收起 理由
jiangbeilu + 10 精彩帖子

总评分: 论坛币 + 10   查看全部评分

藤椅
不二不幸福 发表于 2019-2-27 16:54:48
cheetahfly 发表于 2019-2-27 14:29
写入一个SQL数据库,比如SQLite,然后用SQL语句合并。
就是说不用R?

板凳
KrHt 发表于 2019-2-27 17:19:33 来自手机
规模过大的话用R处理数据不是很好

报纸
jiangbeilu 学生认证  发表于 2019-2-27 21:47:54
用Python是可以往本地写,然后追加操作的

cheetahfly版主说的,是导入到sql,比如mysql,sqlite等数据库,然后用union合并也可以
已有 1 人评分论坛币 收起 理由
cheetahfly + 10 精彩帖子

总评分: 论坛币 + 10   查看全部评分

地板
jiangbeilu 学生认证  发表于 2019-2-27 21:48:49
不二不幸福 发表于 2019-2-27 16:54
就是说不用R?
R读取的数据都放到内存里了,显示你没有24G的内存,无法放入0.5*48G的数据

7
lishi22692237 学生认证  发表于 2019-2-28 09:59:47
jiangbeilu 发表于 2019-2-27 21:48
R读取的数据都放到内存里了,显示你没有24G的内存,无法放入0.5*48G的数据
那不只是要0.5*48啊,应该要超过许多

8
不二不幸福 发表于 2019-2-28 16:22:40
jiangbeilu 发表于 2019-2-27 21:47
用Python是可以往本地写,然后追加操作的

cheetahfly版主说的,是导入到sql,比如mysql,sqlite等数据库, ...
多谢,sql我确实不会,我再用python试试

9
BG4IMP 发表于 2020-8-19 19:04:02
用R可以读一个写一个,都追加写到一个文件里。及时释放内存即可。速度还算可以。

10
ntsean 发表于 2020-8-20 13:46:56
sparklyr

但是注意设置一下参数,不要一次性读入memory,其他sparkly自动批量处理

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-17 13:25