FileSystem 是一个抽象的文件系统 API,LocalFileSystem 是一个实现,用于访问本地机器上的文件。SubTreeFileSystem 是一个实现,它在预先添加一个固定基路径后委托给另一个实现。
工厂
LocalFileSystem$create() 返回对象,不带任何参数。
SubTreeFileSystem$create() 接受以下参数:
base_path,字符串路径base_fs,一个FileSystem对象
S3FileSystem$create() 可选地接受参数:
anonymous: 逻辑值,默认为FALSE。如果为 true,则不会尝试使用标准 AWS 配置方法查找凭证。access_key,secret_key: 身份验证凭证。如果提供其中一个,则必须也提供另一个。如果两者都提供,它们将覆盖在环境级别设置的任何 AWS 配置。session_token: 可选字符串,用于与access_key和secret_key一起进行身份验证。role_arn: 字符串 AWS ARN,表示一个 AccessRole。如果提供此参数而不是access_key和secret_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)。check_directory_existence_before_creation: 逻辑值,在创建之前检查目录是否已存在。这对于对象变异操作受速率限制或现有目录为只读的云存储操作很有帮助(默认为FALSE)。request_timeout: Windows 和 macOS 上套接字读取时间(以秒为单位)。如果为负数,则使用 AWS SDK 默认值(通常为 3 秒)。connect_timeout: 套接字连接超时(以秒为单位)。如果为负数,则使用 AWS SDK 默认值(通常为 1 秒)。
GcsFileSystem$create() 可选地接受参数:
anonymous: 逻辑值,默认为FALSE。如果为 true,则不会尝试使用标准 GCS 配置方法查找凭证。access_token: 可选字符串,用于身份验证。应与expiration一起提供。expiration:POSIXct。可选的日期时间,表示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和包含S3FileSystem的SubTreeFileSystem。$base_fs: 对于SubTreeFileSystem,它包含的FileSystem。$base_path: 对于SubTreeFileSystem,在$base_fs中被认为是此SubTreeFileSystem根的路径。$options: 对于GcsFileSystem,用于创建GcsFileSystem实例的选项,表示为list。
注释
在 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”。