2017-07-31 63 views
3

我們在Dask(Python)和Drill(使用Sergeant數據包的R)中生成parquet文件。我們已經注意到了一些問題:生成鑲木地板文件 - R和Python之間的差異

  1. Dask(即fastparquet)的格式具有_metadata_common_metadata文件而parquet文件中R \ Drill沒有這些文件,並有parquet.crc文件,而不是(可刪除)。這些parquet實現之間有什麼區別?
+0

據我所知,有各種[parquet版本](http://matthewrocklin.com/blog/work/2017/06/28/use-parquet),但很難理解差異 –

+0

您應該發佈這三個問題作爲堆棧溢出單獨的問題。將多個作爲單個實例發佈很難回答,並將其集成到SO用戶界面中。 – xhochy

+0

Thx爲輸入 - 將這樣做 –

回答

2

(只回答:1),請發表不同的問題,使其更容易回答)

_metadata_common_metadata是不需要的鑲木集輔助文件,這些文件的人是由星火使用/ Dask/Hive/...來推斷數據集所有Parquet文件的元數據,而無需讀取所有文件的頁腳。與此相反,Apache Drill在每個文件夾中(按需)生成一個包含所有Parquet文件所有頁腳的類似文件。只有在數據集上的第一個查詢中,所有文件纔會被讀取,其他查詢將只讀取緩存所有頁腳的文件。

使用_metadata_common_metadata的工具應該能夠利用它們來縮短執行時間,但不依賴它們進行操作。如果它們不存在,那麼查詢引擎就只需要讀取所有頁腳。

+0

非常正確。另外,fastparquet(dask用來創建文件的庫)也可以讀取不帶'_metadata'的實地數據文件列表,但最初加載元數據會變慢。 Spark用來製作這些文件,但不再做,我相信Hive仍然會。 – mdurant