跳到內容

FileSystem 是一個抽象檔案系統 API,LocalFileSystem 是一個存取本地機器上檔案的實作。SubTreeFileSystem 是一個委派給另一個實作,並在前面加上固定基礎路徑的實作

Factory

LocalFileSystem$create() 返回物件,不接受任何引數。

SubTreeFileSystem$create() 接受以下引數

  • base_path,字串路徑

  • base_fs,一個 FileSystem 物件

S3FileSystem$create() 可選地接受引數

  • anonymous:邏輯值,預設為 FALSE。如果為 true,將不會嘗試使用標準 AWS 配置方法查找憑證。

  • access_keysecret_key:身份驗證憑證。如果提供其中一個,則必須同時提供另一個。如果同時提供兩者,它們將覆蓋在環境層級設定的任何 AWS 配置。

  • session_token:可選的字串,用於與 access_keysecret_key 一起進行身份驗證

  • role_arn:AccessRole 的字串 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 上,Socket 讀取逾時時間(以秒為單位)。如果為負數,則使用 AWS SDK 預設值(通常為 3 秒)。

  • connect_timeout:Socket 連接逾時時間(以秒為單位)。如果為負數,則使用 AWS SDK 預設值(通常為 1 秒)。

GcsFileSystem$create() 可選地接受引數

  • anonymous:邏輯值,預設為 FALSE。如果為 true,將不會嘗試使用標準 GCS 配置方法查找憑證。

  • access_token:可選的字串,用於身份驗證。應與 expiration 一起提供

  • expirationPOSIXct。可選的日期時間,表示 access_token 將過期的時間點。

  • json_credentials:可選的字串,用於身份驗證。可以是包含 JSON 憑證的字串,也可以是其在檔案系統上的位置的路徑。如果給定憑證的路徑,則檔案應為 UTF-8 編碼。

  • endpoint_override:如果非空,將連接到提供的host name/port,例如 "localhost:9001",而不是預設的 GCS 位址。這主要用於測試目的。

  • scheme:連接傳輸協定(預設為 "https")

  • default_bucket_location:用於在新儲存貯體中建立的預設位置(或「區域」)。

  • retry_limit_seconds:如果檔案系統遇到錯誤,則重試的最大時間量(以秒為單位)。預設值為 15 秒。

  • default_metadata:要在新物件中寫入的預設元數據。

  • project_id:用於建立儲存貯體的專案。

方法

  • path(x):從目前 FileSystem 建立一個 SubTreeFileSystem,根目錄位於指定的路徑 x

  • cd(x):從目前 FileSystem 建立一個 SubTreeFileSystem,根目錄位於指定的路徑 x

  • ls(path, ...):列出給定路徑或 FileSystem 根目錄下的檔案或物件(如果未提供 path)。傳遞給 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,用於建立 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'。