將 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
。