我有数百万个具有不同标题的 csv 文件,我想将它们合并到一个大数据框中。
我的问题是我尝试过的解决方案有效,但速度太慢!顺便问一下,我可以在实验室中使用 Sparklyr 来处理多节点集群,这个大数据工具有帮助吗?
这些文件看起来像这样:
文件1
标头1,标头3,标头5
甲、乙、丙
文件2
标头4,标头2
e,f
文件3
标头2,标头6
一个,c
我想将它们合并为:
标头1、标头2、标头3、标头4、标头5、标头6
a,,b,,c,,f,,e,,,a,,,,c
我尝试将它们直接与 R 绑定,但程序在服务器中运行几天后崩溃了。代码如下所示:
library(plyr)
library(dplyr)
library(readr)
csvfiles <- list.files(pattern = "file\\d+.csv")
for (i in 1:length(csvfiles)) {
assign(paste0("files", i),read_csv(csvfiles[[i]]))
}
csvlist <- mget(ls(pattern = "files\\d"))
result <- data.frame()
for (i in 1:length(csvlist)){
my_list <- list(result,csvlist[[i]])
result <- rbindlist(my_list,use.names=TRUE, fill=TRUE)
}
Run Code Online (Sandbox Code Playgroud)
然后我尝试首先使用命令行工具(例如sed、awk和 )提取标头csvtk。我使用的代码如下所示
for file in $(ls file*.csv); do cat $file | sed "2 d" | csvtk …Run Code Online (Sandbox Code Playgroud)