如何解决使用制表符分隔值以 txt 文件格式存储非常大的数据
我正在使用 pd.read_sql()
从 SQL DB 加载数据集。我试图在 excel/csv 文件中存储 1 亿行和 300 列。但由于1,048,576行的限制而失败。
所以我尝试使用
存储与.tsv
文件相同的文件
pd.to_csv("data.txt",header=True,index=False,sep='\t',mode='a')
我没有发现制表符分隔txt文件的限制。
去好还是有其他好的选择?
解决方法
可能不是一个好主意。您的限制是您的机器内存,因为熊猫将所有内容加载到内存中。该大小的数据框不适合。您可能需要更多机器和分布式计算框架,例如 apache spark 或 dask。
或者,根据您想对数据做什么,您可能不需要将其加载到内存中。
,这里唯一我不确定的是 TableA.aggregate([
{"$lookup": {
"from": "TableB","localField": "_id","foreignField": "_id","as": "b"
}},{ "$match": { "name":"b.name" } }
])
内部是如何工作的。除此之外,你的方法完全没问题。 Hadoop 广泛使用 pandas
格式来存储和处理数据。并且没有“.tsv
文件的限制”之类的东西。文件只是一个字节序列。 .tsv
和 \t
只是字符,没有任何区别。您遇到的限制是由 Microsoft Excel 强加的,而不是由操作系统强加的。例如,很久以前它是较低的,其他电子表格应用程序可能会施加不同的限制。
如果你\n
和open('your_file.tsv','wt')
,直到readline
的字节才会被占用。没有其他事情发生。没有像在 \n
之前允许多少个 \t
,文件中允许有多少个 \n
这样的事情。它们都只是字节,一个文件可以包含操作系统允许的尽可能多的字符。
它因操作系统而异,但是,根据NTFS vs FAT vs exFAT,NTFS 文件系统的最大文件大小接近 16TB。但实际上,将一个大文件拆分为多个大小合理的文件是个好主意。例如,您可以轻松分发它们。
要处理如此大的数据,您应该采用迭代或分布式方法。例如,Hadoop。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。