有问题的JSON文件相当大(~1.5GB),但在开头附近的已知位置(.meta.view.approvals)有一些元数据。
如何使用jq或gojq来提取该位置的对象,而不必将整个文件加载到内存中,也不必在提取了感兴趣的项之后等待整个文件的处理停止?
我们寻找一个泛型方法,但我感兴趣的特定文件是位于https://data.montgomerycountymd.gov/api/views/4mse-ku6q/rows.json的rows.json。我的副本是在2023年1月12日检索到的;文件大小为1459382170字节,文件中. meta.view.createdAt的值为1403103517
jq、gojq和jm的命令行替代方案也很有意义,只要它们在内存和CPU使用方面都比较经济。
1条答案
按热度按时间2g32fytz1#
将jq(或gojq)的流解析器与过滤器"first_run"结合使用,如下所示。
例如,与使用非流式解析器相比,这减少了执行时间和存储器需求:从50秒到几微秒,从4,112MB的RAM(mrss)到3MB。
注:
下面是一段摘录,显示了在3GHz机器上的命令调用和关键性能统计信息。
以下jm命令产生的结果基本相同:
下面是
first_run
的def: