将 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
而内部目录不为 NULL
,则会引发错误。
HivePartitioning
用于 Hive 样式的分区,它在路径段中嵌入字段名称和值,例如“/year=2019/month=2/data.parquet”。由于字段在路径段中命名,因此顺序无关紧要。此分区方案允许 NULL
值。写入时,它们将被替换为可配置的 null_fallback
,默认为字符串 "__HIVE_DEFAULT_PARTITION__"
。读取时,null_fallback
字符串将根据需要替换为 NA
。
PartitioningFactory
子类指示 DatasetFactory
从文件路径中检测分区特征。
工厂
DirectoryPartitioning$create()
和 HivePartitioning$create()
方法都将 Schema 作为单个输入参数。辅助函数 hive_partition(...)
是 HivePartitioning$create(schema(...))
的简写。
使用 DirectoryPartitioningFactory$create()
,您可以只提供路径段的名称(在我们的示例中为 c("year", "month")
),DatasetFactory
将推断这些分区变量的数据类型。HivePartitioningFactory$create()
不带参数:变量名称及其类型都可以从文件路径中推断出来。不带参数的 hive_partition()
返回一个 HivePartitioningFactory
。