以制表符分隔值的 txt 文件格式存储非常大的数据

Store very huge data in txt file format with Tab Separated values

我正在使用 pd.read_sql() 从 SQL 数据库加载数据集。我试图在一个 excel/csv 文件中存储 1 亿行和 300 列。但是由于1,048,576行的限制而失败了。

所以我尝试使用

存储与 .tsv 文件相同的文件
pd.to_csv("data.txt", header=True, index=False, sep='\t', mode='a')

我没有发现制表符分隔的 txt 文件的限制。

可以去吗,还有其他好的选择吗?

可能不是个好主意。您的限制是您的机器内存,因为 pandas 将所有内容加载到内存中。该大小的数据框不适合。您可能需要更多机器和分布式计算框架,例如 apache spark 或 dask。

或者,根据您要对数据执行的操作,您可能不需要将其加载到内存中。

这里我唯一不确定的是 pandas 内部是如何工作的。除此之外,你的方法完全没问题。 Hadoop 广泛使用 .tsv 格式来存储和处理数据。并且没有“.tsv文件的限制”之类的东西。一个文件只是一个字节序列。 \t\n 只是字符,没有任何区别。您遇到的限制是由 Microsoft Excel 强加的,而不是由 OS 强加的。例如,很久以前它较低,其他传播 sheet 应用程序可能会施加不同的限制。

如果您 open('your_file.tsv', 'wt')readline,则只占用 \n 之前的字节。没有其他事情发生。没有允许多少个\t直到\n,一个文件中允许多少个\n这样的事情。它们都只是字节,一个文件可以包含 OS.

允许的字符数

它在不同的 OS 之间有所不同,但是,根据 NTFS vs FAT vs exFAT,NTFS 文件系统的最大文件大小将近 16TB。但实际上,将一个大文件拆分成多个大小合理的文件是个好主意。例如,您可以轻松分发它们。

要处理如此大的数据,您应该采用迭代或分布式方法。例如,Hadoop。