Ubuntu下CSV文件行转置高效处理方案问询(690转250k)
高效转置CSV文件集的处理方案求助
问题背景
现有690个.csv文件,每个包含250,000行。需要将所有输入文件的第N行写入对应的第N个输出.csv文件,最终得到250,000个各含690行的.csv文件,运行环境为Ubuntu。
已尝试的方法
- 16核多线程循环处理:逐行追加到对应输出文件,加锁避免冲突但速度极慢;不加锁速度较快(约6小时)但存在数据写入冲突,导致行丢失或错误。
- 单线程逐文件逐行写入:前期速度较快,但处理到第10,000行后速度骤降。
- Julia语言尝试:使用
open()和readline()比读取为DataFrame更快,因为后者存在类型推断开销;所有尝试过的方法均为O(n)复杂度。
当前思路
计划尝试通过position()获取行的字节偏移,用seek()定位行后写入输出文件,但仍需循环处理690个输入文件,不确定单线程索引写入是否可行。
求助需求
寻求更高效的处理方案,不排斥使用其他编程语言。
内容的提问来源于stack exchange,提问作者Andrew Bannerman
相关产品推荐
相关产品推荐

