跳过内容

围绕open_dataset的包装器,明确包含镜像read_csv_arrow()read_delim_arrow()read_tsv_arrow()的参数,以便在打开单个文件的函数和打开数据集的函数之间轻松切换。

用法

open_delim_dataset(
  sources,
  schema = NULL,
  partitioning = hive_partition(),
  hive_style = NA,
  unify_schemas = NULL,
  factory_options = list(),
  delim = ",",
  quote = "\"",
  escape_double = TRUE,
  escape_backslash = FALSE,
  col_names = TRUE,
  col_types = NULL,
  na = c("", "NA"),
  skip_empty_rows = TRUE,
  skip = 0L,
  convert_options = NULL,
  read_options = NULL,
  timestamp_parsers = NULL,
  quoted_na = TRUE,
  parse_options = NULL
)

open_csv_dataset(
  sources,
  schema = NULL,
  partitioning = hive_partition(),
  hive_style = NA,
  unify_schemas = NULL,
  factory_options = list(),
  quote = "\"",
  escape_double = TRUE,
  escape_backslash = FALSE,
  col_names = TRUE,
  col_types = NULL,
  na = c("", "NA"),
  skip_empty_rows = TRUE,
  skip = 0L,
  convert_options = NULL,
  read_options = NULL,
  timestamp_parsers = NULL,
  quoted_na = TRUE,
  parse_options = NULL
)

open_tsv_dataset(
  sources,
  schema = NULL,
  partitioning = hive_partition(),
  hive_style = NA,
  unify_schemas = NULL,
  factory_options = list(),
  quote = "\"",
  escape_double = TRUE,
  escape_backslash = FALSE,
  col_names = TRUE,
  col_types = NULL,
  na = c("", "NA"),
  skip_empty_rows = TRUE,
  skip = 0L,
  convert_options = NULL,
  read_options = NULL,
  timestamp_parsers = NULL,
  quoted_na = TRUE,
  parse_options = NULL
)

参数

sources

以下之一

  • 包含数据文件的目录的字符串路径或URI

  • 引用包含数据文件的目录的文件系统(例如s3_bucket()返回的)

  • 单个文件的字符串路径或URI

  • 单个数据文件的路径或URI的字符向量

  • 此函数创建的Dataset对象列表

  • dataset_factory()创建的DatasetFactory对象列表。

sources是文件URI向量时,它们必须都使用相同的协议,指向位于同一文件系统且具有相同格式的文件。

schema

DatasetSchema。如果为NULL(默认值),则将从数据源推断Schema。

partitioning

sources是目录路径/URI时,以下之一:

  • 一个Schema,在这种情况下,将解析相对于sources的文件路径,并将路径段与Schema字段匹配。

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

  • 一个PartitioningPartitioningFactory,例如由hive_partition()返回的

  • NULL 表示无分区

默认情况下,除非hive_style = FALSE,否则会自动检测Hive样式分区。有关详细信息,请参阅“分区”部分。当sources不是目录路径/URI时,partitioning将被忽略。

hive_style

逻辑值:partitioning是否应解释为Hive样式?默认值为NA,这意味着检查文件路径以确定Hive样式分区并相应地处理。

unify_schemas

逻辑值:是否应扫描所有数据片段(文件、Dataset)以从中创建统一Schema?如果为FALSE,则仅检查第一个片段的Schema。当您知道并信任所有片段都具有相同Schema时,请使用此快速路径。当从目录路径/URI或文件路径/URI向量创建数据集时,默认值为FALSE(因为文件可能很多,扫描可能很慢),但当sourcesDataset列表时,默认值为TRUE(因为列表中的Dataset应该很少,并且它们的Schema已在内存中)。

factory_options

FileSystemFactoryOptions 的可选列表

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

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

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

delim

用于分隔记录中字段的单个字符。

quote

用于引用字符串的单个字符。

escape_double

文件是否通过双引号来转义引号?即,如果此选项为TRUE,则值""""表示单个引号,\"

escape_backslash

文件是否使用反斜杠来转义特殊字符?这比escape_double更通用,因为反斜杠可用于转义分隔符、引号字符或添加\\n等特殊字符。

col_names

如果为TRUE,则输入的第一个行将用作列名,并且不会包含在数据框中。如果为FALSE,则列名将由Arrow生成,从“f0”、“f1”、...、“fN”开始。或者,您可以指定一个列名的字符向量。

col_types

列类型的紧凑字符串表示,一个Arrow Schema,或NULL(默认值)以从数据中推断类型。

na

要解释为缺失值的字符串字符向量。

skip_empty_rows

是否完全忽略空白行?如果为TRUE,则空白行将完全不表示。如果为FALSE,则将用缺失值填充。

skip

读取数据前要跳过的行数。

convert_options

参见CSV转换选项

read_options

参见CSV读取选项

timestamp_parsers

用户定义的时间戳解析器。如果指定了多个解析器,CSV转换逻辑将从该向量的开头开始尝试解析值。可能的值有

quoted_na

引号内的缺失值是应被视为缺失值(默认值)还是字符串。(请注意,这与Arrow C++中相应转换选项strings_can_be_null的默认值不同。)

parse_options

参见CSV解析选项。如果给定,这将覆盖其他参数中提供的任何解析选项(例如delimquote等)。

read_delim_arrow()当前支持但此处不支持的选项

  • file(请改为在sources中指定文件)

  • col_select(请改为在数据集创建后选择子集列)

  • as_data_frame(请改为在数据集创建后转换为数据框)

  • parse_options

另请参阅

示例

# Set up directory for examples
tf <- tempfile()
dir.create(tf)

df <- data.frame(x = c("1", "2", "NULL"))
file_path <- file.path(tf, "file1.txt")
write.table(df, file_path, sep = ",", row.names = FALSE)

# Use readr-style params identically in both `read_csv_dataset()` and `open_csv_dataset()`
read_csv_arrow(file_path, na = c("", "NA", "NULL"), col_names = "y", skip = 1)
#> # A tibble: 3 x 1
#>       y
#>   <int>
#> 1     1
#> 2     2
#> 3    NA
open_csv_dataset(file_path, na = c("", "NA", "NULL"), col_names = "y", skip = 1)
#> FileSystemDataset with 1 csv file
#> 1 columns
#> y: int64

# Use `col_types` to specify a schema, partial schema, or compact representation
tf2 <- tempfile()
write_csv_dataset(cars, tf2)

open_csv_dataset(tf2, col_types = schema(speed = int32(), dist = int32()))
#> FileSystemDataset with 1 csv file
#> 2 columns
#> speed: int32
#> dist: int32
open_csv_dataset(tf2, col_types = schema(speed = int32()))
#> FileSystemDataset with 1 csv file
#> 2 columns
#> speed: int32
#> dist: int64
open_csv_dataset(tf2, col_types = "ii", col_names = c("speed", "dist"), skip = 1)
#> FileSystemDataset with 1 csv file
#> 2 columns
#> speed: int32
#> dist: int32