使用带有块的pandas读取大json数据集

问题描述 投票:0回答:1

我想读一个6gb大小的json(我还有1.5gb的另一个),我试着用pandas正常阅读(只用pd.read_json),显然内存已经死了。然后,我尝试使用chunksize param,如:

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)。

python pandas dataframe
1个回答
0
投票

Dask和Pyspark的数据帧解决方案几乎与pandas完全相同。 Pyspark是一个Spark api,可以跨JVM分配工作负载。 Dask专门针对单个工作站用例的内存不足并实现数据帧api。

如图所示,here read_json的api主要是从熊猫传来的。

当您从问题中移植示例代码时,我会注意到两件事:

  1. 我怀疑你不需要文件上下文管理器,因为简单地传递文件路径可能有效。
  2. 如果你有多条记录,Dask支持像“path / to / files / * .json”这样的blob。
© www.soinside.com 2019 - 2024. All rights reserved.