跳至内容

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