跳至内容

FileSystem 是一个抽象的文件系统 API,LocalFileSystem 是一个访问本地机器上文件的实现。SubTreeFileSystem 是一个实现,它在预先添加固定基本路径后委托给另一个实现

工厂

LocalFileSystem$create() 返回对象,并且不接受任何参数。

SubTreeFileSystem$create() 接受以下参数

  • base_path,一个字符串路径

  • base_fs,一个 FileSystem 对象

S3FileSystem$create() 可选地接受参数

  • anonymous:逻辑值,默认 FALSE。如果为真,则不会尝试使用标准 AWS 配置方法查找凭据。

  • access_keysecret_key:身份验证凭据。如果提供了一个,则必须提供另一个。如果同时提供两个,它们将覆盖在环境级别设置的任何 AWS 配置。

  • session_token:与 access_keysecret_key 一起使用的可选身份验证字符串

  • role_arn:访问角色的 AWS ARN 字符串。如果提供此角色而不是 access_keysecret_key,则将通过假定此角色来获取临时凭据。

  • session_name:假定角色会话的可选字符串标识符。

  • external_id:可选唯一字符串标识符,当您在另一个帐户中假定角色时可能需要它。

  • load_frequency:整数,从假定角色会话获取临时凭据的频率(以秒为单位)。默认值为 900(即 15 分钟)

  • region:要连接到的 AWS 区域。如果省略,AWS 库将根据客户端配置提供合理的默认值,如果找不到其他备选方案,则回退到“us-east-1”。

  • endpoint_override:如果非空,则使用连接字符串(例如“localhost:9000”)覆盖区域。这对于连接到模拟 S3 的文件系统很有用。

  • scheme:S3 连接传输(默认“https”)

  • proxy_options:可选字符串,连接到 S3 时要使用的代理的 URI

  • background_writes:逻辑值,是否 OutputStream 写入将在后台发出,不会阻塞(默认 TRUE

  • allow_bucket_creation:逻辑值,如果为 TRUE,则文件系统将在 $CreateDir() 在存储桶级别调用时创建存储桶(默认 FALSE)。

  • allow_bucket_deletion:逻辑值,如果为 TRUE,则文件系统将在 $DeleteDir() 在存储桶级别调用时删除存储桶(默认 FALSE)。

  • request_timeout:Windows 和 macOS 上的套接字读取时间(以秒为单位)。如果为负数,则使用 AWS SDK 默认值(通常为 3 秒)。

  • connect_timeout:套接字连接超时(以秒为单位)。如果为负数,则使用 AWS SDK 默认值(通常为 1 秒)。

GcsFileSystem$create() 可选地接受参数

  • anonymous:逻辑值,默认 FALSE。如果为真,则不会尝试使用标准 GCS 配置方法查找凭据。

  • access_token:可选身份验证字符串。应与 expiration 一起提供

  • expirationPOSIXct。可选日期时间,表示 access_token 将过期的时刻。

  • json_credentials:可选身份验证字符串。可以是包含 JSON 凭据的字符串,也可以是其在文件系统上的位置的路径。如果给出凭据的路径,则文件应为 UTF-8 编码。

  • endpoint_override:如果非空,将连接到提供的主机名/端口,例如“localhost:9001”,而不是默认的 GCS 主机名/端口。这主要用于测试目的。

  • scheme:连接传输(默认“https”)

  • default_bucket_location:创建新存储桶的默认位置(或“区域”)。

  • retry_limit_seconds:如果文件系统遇到错误,则花费在重试上的最长时间。默认值为 15 秒。

  • default_metadata:写入新对象中的默认元数据。

  • project_id:用于创建存储桶的项目。

方法

  • path(x):从当前 FileSystem 创建一个以指定路径 x 为根的 SubTreeFileSystem

  • cd(x):从当前 FileSystem 创建一个以指定路径 x 为根的 SubTreeFileSystem

  • ls(path, ...):列出给定路径上的文件或对象,或者如果没有提供 path,则列出 FileSystem 的根目录中的文件或对象。传递给 FileSelector$create 的其他参数,请参见 FileSelector

  • $GetFileInfo(x)x 可以是 FileSelector 或者路径的字符向量。返回一个包含 FileInfo 的列表

  • $CreateDir(path, recursive = TRUE):创建目录和子目录。

  • $DeleteDir(path):递归删除目录及其内容。

  • $DeleteDirContents(path):递归删除目录的内容。与 $DeleteDir() 相似,但不会删除目录本身。传递空路径("")将清除整个文件系统树。

  • $DeleteFile(path):删除文件。

  • $DeleteFiles(paths):删除多个文件。默认实现按顺序发出单个删除操作。

  • $Move(src, dest):移动/重命名文件或目录。如果目标存在:如果它是一个非空目录,则返回错误,否则,如果它与源具有相同的类型,则替换它,否则,行为未指定(取决于实现)。

  • $CopyFile(src, dest):复制文件。如果目标存在并且是一个目录,则返回错误。否则,它将被替换。

  • $OpenInputStream(path):打开用于顺序读取的 输入流

  • $OpenInputFile(path):打开用于随机访问读取的 输入文件

  • $OpenOutputStream(path):打开用于顺序写入的 输出流

  • $OpenAppendStream(path):打开用于追加的 输出流

活动绑定

  • $type_name:字符串文件系统类型名称,例如“local”、“s3”等。

  • $region:AWS 区域字符串,用于 S3FileSystem 和包含 S3FileSystemSubTreeFileSystem

  • $base_fs:对于 SubTreeFileSystem,它包含的 FileSystem

  • $base_path:对于 SubTreeFileSystem,在 $base_fs 中的路径,该路径在此 SubTreeFileSystem 中被视为根目录。

  • $options:对于 GcsFileSystem,作为 list 的用于创建 GcsFileSystem 实例的选项

备注

在 S3FileSystem 上,对顶级目录的 $CreateDir() 会创建一个新的存储桶。当 S3FileSystem 创建新的存储桶时(假设 allow_bucket_creation 为 TRUE),它不会传递任何非默认设置。在 AWS S3 中,存储桶和所有对象将不可公开访问,并且没有任何存储桶策略和任何资源标签。要更多地控制存储桶的创建方式,请使用不同的 API 来创建它们。

在 S3FileSystem 上,仅针对致命错误或打印返回值时才会生成输出。为了进行故障排除,可以使用环境变量 ARROW_S3_LOG_LEVEL 设置日志级别(例如,Sys.setenv("ARROW_S3_LOG_LEVEL"="DEBUG"))。日志级别必须在运行与 S3 交互的任何代码之前设置。可能的值包括“FATAL”(默认值)、“ERROR”、“WARN”、“INFO”、“DEBUG”(推荐)、“TRACE”和“OFF”。