我想读取一个6gb大小的json(我还有一个1.5gb的大小),并且我尝试使用pandas(仅使用pd.read_json)正常读取,并且显然内存死了。 然后,我尝试使用chunksize参数,例如:
with open('data/products.json', encoding='utf-8') as f:
df = []
df_reader = pd.read_json(f, lines=True, chunksize=1000000)
for chunk in df_reader:
df.append(chunk)
data = pd.read_json(df)
但是那也不行,我的电脑在运行的第一分钟就死了(实际上是8GB RAM)。
答案 0 :(得分:0)
Dask和Pyspark的数据框解决方案几乎与pandas
相同。 Pyspark是一个Spark API,可在JVM之间分配工作负载。 Dask专门针对单个工作站用例的内存不足并实现了数据框api。
如图here read_json
的api主要从熊猫中通过。
当您从问题中移植示例代码时,我会注意两件事:
我怀疑您不需要文件上下文管理器,因为只需传递文件路径就可以。
如果您有多个记录,Dask支持诸如“ path / to / files / *。json”之类的blob。