跳到內容

Partitioning 物件傳遞給 FileSystemDatasetFactory$create() 方法,以指示如何解釋檔案路徑來定義分割。

DirectoryPartitioning 描述如何依序解釋原始路徑段。例如,schema(year = int16(), month = int8()) 將為類似 "2019/01/file.parquet"、"2019/02/file.parquet" 等檔案路徑定義分割。在此方案中,NULL 值將被跳過。在先前的範例中:當寫入資料集時,如果月份為 NA (或 NULL),檔案將被放置在 "2019/file.parquet" 中。讀取時,"2019/file.parquet" 中的列將為月份欄位傳回 NA。如果外部目錄為 NULL 而內部目錄不是,則會引發錯誤。

HivePartitioning 用於 Hive 樣式的分割,它將欄位名稱和值嵌入路徑段中,例如 "/year=2019/month=2/data.parquet"。因為欄位在路徑段中被命名,所以順序並不重要。此分割方案允許 NULL 值。它們將被可配置的 null_fallback 取代,寫入時預設為字串 "__HIVE_DEFAULT_PARTITION__"。讀取時,null_fallback 字串將被替換為適當的 NA

PartitioningFactory 子類別指示 DatasetFactory 從檔案路徑中偵測分割特徵。

Factory

DirectoryPartitioning$create()HivePartitioning$create() 方法都接受一個 Schema 作為單一輸入引數。輔助函數 hive_partition(...)HivePartitioning$create(schema(...)) 的簡寫。

使用 DirectoryPartitioningFactory$create(),您可以僅提供路徑段的名稱(在我們的範例中為 c("year", "month")),而 DatasetFactory 將推斷這些分割變數的資料類型。HivePartitioningFactory$create() 不接受任何引數:變數名稱及其類型都可以從檔案路徑中推斷出來。沒有引數的 hive_partition() 會傳回 HivePartitioningFactory