當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python dask.dataframe.read_parquet用法及代碼示例


用法:

dask.dataframe.read_parquet(path, columns=None, filters=None, categories=None, index=None, storage_options=None, engine='auto', gather_statistics=None, ignore_metadata_file=False, metadata_task_size=None, split_row_groups=None, chunksize=None, aggregate_files=None, **kwargs)

將 Parquet 文件讀入 Dask DataFrame

這會將 Parquet 數據目錄讀入 Dask.dataframe,每個分區一個文件。如果存在,它會在已排序的列中選擇索引。

參數

path字符串或列表

數據的源目錄,或各個 parquet 文件的路徑。使用 s3:// 之類的協議作為前綴,以從替代文件係統中讀取。要從多個文件中讀取,您可以傳遞一個 globstring 或路徑列表,但需要注意的是它們都必須具有相同的協議。

columnsstr 或列表,默認無

作為輸出中的列讀入的字段名稱。默認情況下,將讀取所有非索引字段(由 pandas parquet 元數據確定,如果存在)。提供單個字段名稱而不是列表以將數據作為係列讀取。

filtersUnion[List[Tuple[str, str, Any]], List[List[Tuple[str, str, Any]]]],默認無

要應用的過濾器列表,例如 [[('col1', '==', 0), ...], ...] 。除非還指定了engine="pyarrow-dataset",否則使用此參數不會導致對最終分區進行逐行過濾。對於其他引擎,過濾僅在分區級別執行,即防止加載某些row-groups 和/或文件。

對於“pyarrow” 引擎,謂詞可以用析取範式 (DNF) 表示。這意味著最裏麵的元組說明了一個單列謂詞。這些內部謂詞與 AND 連詞組合成一個更大的謂詞。然後,outer-most 列表將所有組合過濾器與 OR 分離組合。

謂詞也可以表示為 List[Tuple]。這些被評估為 AND 連詞。要在預測中表達 OR,必須使用(首選 “pyarrow”)List[List[Tuple]] 表示法。

請注意,“fastparquet” 引擎當前不支持使用 DNF 過濾分區列(需要 List[Tuple])。

indexstr,列表或假,默認無

用作輸出幀索引的字段名稱。默認情況下,將從 pandas parquet 文件元數據(如果存在)推斷。使用 False 將所有字段讀取為列。

categories列表或字典,默認無

對於此處列出的任何字段,如果 parquet 編碼為 Dictionary,則將使用 dtype 類別創建列。僅當保證列在所有row-groups 中都被編碼為字典時才使用。如果是列表,則假設最多 2**16-1 個標簽;如果是 dict,請指定預期的標簽數量;如果沒有,將為 dask/fastparquet 寫入的數據自動加載類別,否則不會。

storage_options字典,默認無

要傳遞到 file-system 後端的鍵/值對(如果有)。

open_file_options字典,默認無

當每個 parquet 數據文件打開以供讀取時,要傳遞給 AbstractFileSystem.open 的鍵/值參數。可以通過在 "precache_options" 鍵下添加 {"method": "parquet"} 來啟用遠程文件係統(例如 S3、GCS)的實驗性(優化)“precaching”。此外,可以使用自定義 file-open 函數(而不是 AbstractFileSystem.open ),方法是在 "open_file_func" 鍵下指定所需的函數。

enginestr,默認 ‘auto’

要使用的 Parquet 閱讀器庫。選項包括:‘auto’, ‘fastparquet’, and ‘pyarrow’。默認為 ‘auto’,如果安裝了 fastparquet,則選擇 FastParquetEngine(否則選擇 ArrowDatasetEngine)。如果指定了‘pyarrow’,將使用 ArrowDatasetEngine(利用 pyarrow.dataset API)。注意:“pyarrow-legacy”選項 (ArrowLegacyEngine) 已棄用。

gather_statistics布爾值,默認無

收集每個數據集分區的統計信息。默認情況下,隻有在 _metadata 文件可用時才會這樣做。否則,隻有在 True 時才會收集統計信息,因為每個文件的頁腳都會被解析(這在某些係統上非常慢)。

ignore_metadata_file布爾值,默認為 False

是否忽略全局_metadata 文件(存在時)。如果 True 或全局 _metadata 文件丟失,則可以並行收集和處理鑲木 floor 元數據。當前僅ArrowDatasetEngine 支持並行元數據處理。

metadata_task_sizeint,默認可配置

如果 parquet 元數據是並行處理的(參見上麵的ignore_metadata_file 說明),則此參數可用於指定 Dask 圖中每個任務要處理的數據集文件的數量。如果此參數設置為 0 ,將禁用並行元數據處理。可以分別使用“metadata-task-size-local” 和“metadata-task-size-remote” 配置字段指定本地和遠程文件係統的默認值(請參閱“dataframe.parquet”)。

split_row_groupsbool 或 int,默認無

如果 _metadata 文件可用或數據集由單個文件組成,則默認為 True(否則默認為 False)。如果為 True,則每個輸出數據幀分區將對應一個 parquet-file row-group。如果為 False,每個分區將對應一個完整的文件。如果給定一個正整數值,則每個數據幀分區將對應於該數量的鑲木 floor row-groups(或更少)。

chunksizeint 或 str,默認無

每個輸出DataFrame 分區的所需大小,以總(未壓縮)鑲木 floor 存儲空間計。如果指定,相鄰的 row-groups 和/或文件將被聚合到同一輸出分區中,直到累積的 total_byte_size parquet-metadata 統計數據達到此值。使用aggregate_files 啟用/禁用inter-file 聚合。

aggregate_filesbool 或 str,默認無

不同的文件路徑是否可以聚合到相同的輸出分區中。此參數需要 gather_statistics=True ,並且僅在指定 chunksizesplit_row_groups 為 >1 的整數時使用。 True 的設置意味著可以將任意兩個文件路徑聚合到同一個輸出分區中,而 False 意味著禁止inter-file 聚合。

對於“hive-partitioned” 數據集,還可以指定“partition”-列名稱。在這種情況下,我們允許聚合任何兩個共享文件路徑的文件,直到並包括相應的目錄名稱。例如,如果以下目錄結構的aggregate_files設置為"section",則03.parquet04.parquet可以聚合在一起,但01.parquet02.parquet不能。但是,如果 aggregate_files 設置為 "region" , 01.parquet 可以與 02.parquet 聚合,並且 03.parquet 可以與 04.parquet 聚合:

dataset-path/
├── region=1/
│   ├── section=a/
│   │   └── 01.parquet
│   ├── section=b/
│   └── └── 02.parquet
└── region=2/
    ├── section=a/
    │   ├── 03.parquet
    └── └── 04.parquet

請注意,aggregate_files 的默認行為是 False。

**kwargs: dict (of dicts)

為讀取後端傳遞 key-word 參數。頂級鍵對應於適當的操作類型,第二級對應於將傳遞給底層 pyarrowfastparquet 函數的 kwargs。支持的頂級鍵:‘dataset’(用於打開pyarrow數據集)、‘file’ or ‘dataset’(用於打開fastparquet.ParquetFile)、‘read’(用於後端讀取函數)、‘arrow_to_pandas’(用於控製參數傳遞以從 pyarrow.Table.to_pandas() 轉換)。任何未在這些頂級鍵下定義的 kwargs 元素都將作為 stand-alone 參數傳遞給 engine.read_partitions 類方法(並且將被 dask.dataframe 中定義的引擎實現忽略)。

例子

>>> df = dd.read_parquet('s3://bucket/my-parquet-data')

相關用法


注:本文由純淨天空篩選整理自dask.org大神的英文原創作品 dask.dataframe.read_parquet。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。