将 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
从文件路径中检测分区特征。
工厂
DirectoryPartitioning$create()
和 HivePartitioning$create()
方法都采用 Schema 作为单个输入参数。辅助函数 hive_partition(...)
是 HivePartitioning$create(schema(...))
的简写。
使用 DirectoryPartitioningFactory$create()
,您可以只提供路径段的名称(在我们的示例中,c("year", "month")
),DatasetFactory
将推断这些分区变量的数据类型。HivePartitioningFactory$create()
不接受任何参数:变量名称和类型都可以从文件路径中推断。hive_partition()
不带参数将返回 HivePartitioningFactory
。