我想读一个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)。
Dask和Pyspark的数据帧解决方案几乎与pandas
完全相同。 Pyspark是一个Spark api,可以跨JVM分配工作负载。 Dask专门针对单个工作站用例的内存不足并实现数据帧api。
如图所示,here read_json
的api主要是从熊猫传来的。
当您从问题中移植示例代码时,我会注意到两件事: