跳至内容

Partitioning 对象传递给 FileSystemDatasetFactory$create() 方法,以指示如何解释文件的路径来定义分区。

DirectoryPartitioning 描述了如何按顺序解释原始路径段。例如,schema(year = int16(), month = int8()) 将为诸如 "2019/01/file.parquet"、"2019/02/file.parquet" 等文件路径定义分区。在此方案中,将跳过 NULL 值。在前面的示例中:当写入数据集时,如果 month 为 NA(或 NULL),则文件将放置在 "2019/file.parquet" 中。读取时,"2019/file.parquet" 中的行将为 month 列返回一个 NA。如果外部目录为 NULL 且内部目录不为 NULL,则会引发错误。

HivePartitioning 适用于 Hive 样式的分区,它将字段名称和值嵌入到路径段中,例如 "/year=2019/month=2/data.parquet"。 由于字段在路径段中命名,因此顺序无关紧要。 此分区方案允许 NULL 值。 它们将被可配置的 null_fallback 替换,该 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