一系列大約 90 個(gè) netCDF 文件,每個(gè)文件大約 27 MB,使用 xarray 的 open_mfdataset 打開需要很長時(shí)間才能加載一個(gè)小的時(shí)空選擇。分塊維度產(chǎn)生邊際收益。decode_cf=True 無論是在函數(shù)內(nèi)部還是單獨(dú)的也沒有區(qū)別。這里的另一個(gè)建議https://groups.google.com/forum/#!topic/xarray/11lDGSeza78讓我將選擇保存為單獨(dú)的 netCdf 并重新加載。當(dāng) dask 部分必須做一些工作(加載、計(jì)算、轉(zhuǎn)換為 pandas 數(shù)據(jù)幀)時(shí),它似乎成為瓶頸。使用 dask.visualize 生成圖形會(huì)生成一個(gè)巨大的圖像。它可能告訴我們一些事情,但我不確定如何解釋。wind = xr.open_mfdataset(testCCMPPath,\ decode_cf=True,\ chunks={'time': 100,\ 'latitude': 100,\ 'longitude': 100})%timeit wind.sel(latitude=latRange, longitude=windLonRange, time=windDateQueryRange).load()wxr = wind.sel(latitude=latRange, longitude=windLonRange, time=windDateQueryRange)df = wxr.to_dataframe()print(df.shape)timeit 輸出顯示每個(gè)循環(huán) 1.93 秒 ± 29.8 毫秒(平均值 ± 標(biāo)準(zhǔn)偏差。7 次運(yùn)行,每個(gè)循環(huán) 1 個(gè))df.shape 輸出只有 164x3。對(duì)于另一個(gè) xr 數(shù)組,我有一個(gè)類似的 sel,并且得到的時(shí)間約為 0.05 秒,但是這有很多稀疏點(diǎn)。wind xr 陣列幾乎沒有空格。
1 回答

千巷貓影
TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
事實(shí)證明,文件數(shù)量太多,dask 無法有效處理。
這些文件具有緯度、經(jīng)度和時(shí)間維度。在這種情況下,時(shí)間的粒度為 3 小時(shí)。我正在操作的時(shí)間尺度使得我正在處理大約 35000 個(gè)文件。太多的dask處理。我通過按年合并文件來解決這個(gè)問題,將 .nc 文件的數(shù)量減少到 12 個(gè)。
CDO (Climate Data Operators) 是一個(gè)讓我們快速合并文件的實(shí)用程序。有關(guān)詳細(xì)信息,請(qǐng)參閱 [ https://www.unidata.ucar.edu/software/netcdf/software.html#CDO][1] 。
我如何使用 cdo 的示例:對(duì)于目錄 ./precip/2004 中的一組文件,我運(yùn)行 shell 命令來創(chuàng)建一個(gè)連接的 netCDF 文件 2004.nc
cdo cat ./precip/2004/*.nc4 2004.nc
從那里開始, xr.open_mfdataset() 表現(xiàn)得更好。
添加回答
舉報(bào)
0/150
提交
取消