跳转到内容

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