跳转到内容

可以使用一个或多个 DatasetFactory 构建 Dataset。此函数帮助您构建一个可以传递给 open_dataset()DatasetFactory

用法

dataset_factory(
  x,
  filesystem = NULL,
  format = c("parquet", "arrow", "ipc", "feather", "csv", "tsv", "text", "json"),
  partitioning = NULL,
  hive_style = NA,
  factory_options = list(),
  ...
)

参数

x

包含数据文件的目录的字符串路径,一个或多个数据文件字符串路径的向量,或一个 DatasetFactory 对象列表,其数据集应组合在一起。如果指定此参数,它将用于构建 UnionDatasetFactory,其他参数将被忽略。

filesystem

一个 FileSystem 对象;如果省略,将从 x 中检测 FileSystem

format

一个 FileFormat 对象,或 x 中文件格式的字符串标识符。当前支持的值

  • "parquet"

  • "ipc"/"arrow"/"feather",彼此的别名;对于 Feather,请注意仅支持版本 2 文件

  • "csv"/"text",相同内容的别名(因为逗号是文本文件的默认分隔符)

  • "tsv",相当于传递 format = "text", delimiter = "\t"

默认为 "parquet",除非还指定了 delimiter,在这种情况下,假定为 "text"。

partitioning

以下之一

  • 一个 Schema,在这种情况下,将解析相对于 sources 的文件路径,并将路径段与 schema 字段匹配。例如,schema(year = int16(), month = int8()) 将为 "2019/01/file.parquet"、"2019/02/file.parquet" 等文件路径创建分区。

  • 一个定义与这些路径段对应的字段名称的字符向量(即,您提供与 Schema 对应的名称,但类型将自动检测)

  • hive_partition() 返回的 HivePartitioningHivePartitioningFactory,它从 Hive 样式路径段中解析显式或自动检测的字段

  • NULL 表示无分区

hive_style

逻辑值:如果 partitioning 是字符向量或 Schema,是否应将其解释为指定 Hive 样式分区?默认为 NA,这意味着检查文件路径是否存在 Hive 样式分区并相应地进行操作。

factory_options

可选 FileSystemFactoryOptions 列表

  • partition_base_dir:在使用 DirectoryPartitioning 发现分区信息时要忽略的字符串路径段前缀。对于 HivePartitioning 没有意义(将被忽略并发出警告),在提供文件路径向量时也无效。

  • exclude_invalid_files:逻辑值:是否应排除无效的数据文件?默认为 FALSE,因为预先检查所有文件会产生 I/O,因此速度会较慢,尤其是在远程文件系统上。如果为 false 且存在无效文件,则在扫描时会出现错误。这是唯一一个在提供要发现文件的目录路径和提供文件路径向量时都有效的 FileSystemFactoryOption。

  • selector_ignore_prefixes:在目录中发现文件时要忽略的文件前缀的字符向量。如果可以通过通用的文件名词缀排除无效文件,则可以避免 exclude_invalid_files 的 I/O 成本。在提供文件路径向量时无效(但如果您提供文件列表,则可以自行过滤无效文件)。

...

传递给 FileFormat$create() 的其他格式特定选项。对于 CSV 选项,请注意,您可以使用 Arrow C++ 库命名(“delimiter”、“quoting”等)或 read_csv_arrow() 中使用的 readr 样式命名(“delim”、“quote”等)来指定它们。并非所有 readr 选项都受支持;如果您遇到 arrow 应该支持的选项,请提交问题。

一个 DatasetFactory 对象。将此传递给 open_dataset(),可能在一个包含其他 DatasetFactory 对象的列表中,以创建一个 Dataset

详情

如果您只有一个 DatasetFactory(例如,您只有一个包含 Parquet 文件的目录),则可以直接调用 open_dataset()。当您想要组合不同的目录、文件系统或文件格式时,请使用 dataset_factory()