我想在一个50GB的文件上使用jq。不用说,机器的内存无法处理它。它已经耗尽了内存。
我尝试了几个选项,包括--stream,但都没有帮助。有人能告诉我我做错了什么吗?以及如何解决它
jq -cn --stream 'fromstream(1|truncate_stream(inputs))' file.json | jq -cr .data[] >> out.json
该文件包含如下数据:
{"data":[{"id":"id1","value":"value1"},{"id":"id2","value":"value2"},{"id":"id3","value":"value3"}...]}
我想读取数据字段中数组的每个值,并将其逐行放入另一个文件中,例如下面这样。
{"id":"id1","value":"value1"}
{"id":"id2","value":"value2"}
{"id":"id3","value":"value3"}
现在命令运行时内存不足并被终止。
fromstream
,您就要求 jq 从流中读取数据并在内存中创建一个数据结构。使用--stream
是没有用的,除非在调用fromstream
之前将流过滤为更易处理的内容(如果您真的需要这样做)。至于如何解决这个问题的建议... 如果您详细描述一下您要解决的实际问题,会更有帮助。 - hobbsdata
键吗?那里找到的值是否足够小,可以适应RAM?还是你想做其他事情? - hobbsmongoimport
命令以将文件加载到Mongo中。一旦加载完成,其他所有操作都将变得微不足道。 - Christian Fritz