当前位置: 首页 > 面试题库 >

将大文本文件(约50GB)拆分为多个文件

暨修洁
2023-03-14
问题内容

我想将一个大小约为50GB的大型文本文件拆分为多个文件。文件中的数据就像这样-[x = 0-9之间的任何整数]

xxx.xxx.xxx.xxx
xxx.xxx.xxx.xxx
xxx.xxx.xxx.xxx
xxx.xxx.xxx.xxx
...............
...............

文件中可能只有几十亿行,我想为每个文件写例如30/40百万。我想这些步骤将是-

  • 我要打开文件
  • 然后使用readline()必须逐行读取文件并同时写入新文件
  • 一旦达到最大行数,它将创建另一个文件并再次开始写入。

我想知道如何将所有这些步骤以一种高效且更快的内存方式组合在一起。我已经在堆栈中看到了一些示例,但是没有一个示例可以完全满足我的实际需求。如果有人可以帮助我,我将不胜感激。


问题答案:

此工作解决方案使用splitShell中可用的命令。由于作者已经接受了使用非python解决方案的可能性,因此请不要投票。

首先,我创建了一个包含1000M条目(15 GB)的测试文件,

awk 'BEGIN{for (i = 0; i < 1000000000; i++) {print "123.123.123.123"} }' > t.txt

然后我用了split

split --lines=30000000 --numeric-suffixes --suffix-length=2 t.txt t

花了5分钟才能制作出34个名称为t00-的小文件t33。33个文件均为458 MB,最后一个t33为153 MB。



 类似资料:
  • 问题内容: 我得到一个包含以下内容的文本文件(12 MB): 有什么办法来分流到12个* .txt文件让说,,(......)? 问题答案: 您可以使用linux bash核心实用程序 注意,或两者都OK,但大小不同。MB为1000 * 1000,M为1024 ^ 2 如果要按行分隔,可以使用参数。 更新 Kirill建议的另一种解决方案,您可以执行以下操作 请注意,是不是,有几个选项,比如,,,

  • 问题内容: 有什么方法可以将.tfrecords文件直接拆分为多个.tfrecords文件,而无需回写每个Dataset示例? 问题答案: 您可以使用如下函数: 例如,要将文件分成100条记录,您可以执行以下操作: 这将创建多个较小的记录文件,等等。

  • 问题内容: 我有从mongodb导出的json文件,如下所示: 大约有30000行,我想将每一行拆分成自己的文件。 (我正在尝试将我的数据转移到榻榻米群集上) 我尝试这样做: 但是我发现它似乎减少了行的负载,而当我期望30000个奇数时,运行此命令的输出仅给了我50个奇数文件! 有没有一种逻辑方法可以使此操作不使用任何适合的方法删除任何数据? 问题答案: 假设您不在乎确切的文件名,如果要将输入拆分

  • 问题内容: 将Spring的配置拆分为多个xml文件的正确方法是什么? 此刻我有 /WEB-INF/foo-servlet.xml /WEB-INF/foo-service.xml /WEB-INF/foo-persistence.xml 我有以下内容: 实际问题: 这种方法正确/最佳吗? 我真的需要同时指定中的配置位置 和该板块? 我需要记住什么才能能够引用中定义的?这与 指定有关吗? 更新1:

  • 问题内容: 我的体积太大了,很难找到正确的视图。 如何将其拆分为多个文件,然后导入?是否涉及速度损失? 我可以这样吗? 问题答案: 在Django中,所有内容都是Python模块(* .py)。你可以创建一个具有内部视图的文件夹,并且仍然可以导入视图,因为这也实现了Python模块。但是一个例子会更好。 你的原始图片可能如下所示: 使用以下文件夹/文件结构,它将起到相同的作用: viewsa.py

  • 问题内容: 我正在尝试将一个大型xml文件拆分为多个文件,并在AWK脚本中使用了以下代码。 上面的代码生成一个名称为“ fileItem_1”,“ fileItem_2”,“ fileItem3”等的xml文件列表。 但是,我希望文件名类似于“ item_XXXXX”,其中XXXXX是XML内的一个节点-如下图所示 因此,基本上我希望“ id”节点为文件名。谁能帮我这个忙吗? 问题答案: 我不会用